epoc32/include/stdapis/boost/serialization/traits.hpp
author William Roberts <williamr@symbian.org>
Tue, 16 Mar 2010 16:12:26 +0000
branchSymbian2
changeset 2 2fe1408b6811
permissions -rw-r--r--
Final list of Symbian^2 public API header files
     1 #ifndef BOOST_SERIALIZATION_TRAITS_HPP
     2 #define BOOST_SERIALIZATION_TRAITS_HPP
     3 
     4 // MS compatible compilers support #pragma once
     5 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
     6 # pragma once
     7 #endif
     8 
     9 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
    10 // traits.hpp:
    11 
    12 // (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
    13 // Use, modification and distribution is subject to the Boost Software
    14 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
    15 // http://www.boost.org/LICENSE_1_0.txt)
    16 
    17 //  See http://www.boost.org for updates, documentation, and revision history.
    18 
    19 // This header is used to apply serialization traits to templates.  The
    20 // standard system can't be used for platforms which don't support
    21 // Partial Templlate Specialization.  
    22 
    23 // The motivation for this is the Name-Value Pair (NVP) template.
    24 // it has to work the same on all platforms in order for archives
    25 // to be portable accross platforms.
    26 
    27 #include <boost/config.hpp>
    28 #include <boost/static_assert.hpp>
    29 
    30 #include <boost/mpl/int.hpp>
    31 #include <boost/serialization/level_enum.hpp>
    32 #include <boost/serialization/tracking_enum.hpp>
    33 
    34 namespace boost {
    35 namespace serialization {
    36 
    37 // common base class used to detect appended traits class
    38 struct basic_traits {};
    39 
    40 template <class T>
    41 struct extended_type_info_impl;
    42 
    43 template<
    44     class T, 
    45     int Level, 
    46     int Tracking,
    47     unsigned int Version = 0,
    48     class ETII = extended_type_info_impl< T >
    49 >
    50 struct traits : public basic_traits {
    51     BOOST_STATIC_ASSERT(Version == 0 || Level >= object_class_info);
    52     BOOST_STATIC_ASSERT(Tracking == track_never || Level >= object_serializable);
    53     typedef BOOST_DEDUCED_TYPENAME mpl::int_<Level> level;
    54     typedef BOOST_DEDUCED_TYPENAME mpl::int_<Tracking> tracking;
    55     typedef BOOST_DEDUCED_TYPENAME mpl::int_<Version> version;
    56     typedef ETII type_info_implementation;
    57 };
    58 
    59 } // namespace serialization
    60 } // namespace boost
    61 
    62 #endif // BOOST_SERIALIZATION_TRAITS_HPP