Chris@16: /*! Chris@16: * \file bitset.hpp Chris@16: * \brief Provides Boost.Serialization support for std::bitset Chris@16: * \author Brian Ravnsgaard Riis Chris@16: * \author Kenneth Riddile Chris@16: * \date 16.09.2004, updated 04.03.2009 Chris@16: * \copyright 2004 Brian Ravnsgaard Riis Chris@16: * \license Boost Software License 1.0 Chris@16: */ Chris@16: #ifndef BOOST_SERIALIZATION_BITSET_HPP Chris@16: #define BOOST_SERIALIZATION_BITSET_HPP Chris@16: Chris@16: // MS compatible compilers support #pragma once Chris@101: #if defined(_MSC_VER) Chris@16: # pragma once Chris@16: #endif Chris@16: Chris@16: #include Chris@16: #include // size_t Chris@16: Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: namespace boost{ Chris@16: namespace serialization{ Chris@16: Chris@16: template Chris@16: inline void save( Chris@16: Archive & ar, Chris@16: std::bitset const & t, Chris@16: const unsigned int /* version */ Chris@16: ){ Chris@16: const std::string bits = t.template to_string< Chris@16: std::string::value_type, Chris@16: std::string::traits_type, Chris@16: std::string::allocator_type Chris@16: >(); Chris@16: ar << BOOST_SERIALIZATION_NVP( bits ); Chris@16: } Chris@16: Chris@16: template Chris@16: inline void load( Chris@16: Archive & ar, Chris@16: std::bitset & t, Chris@16: const unsigned int /* version */ Chris@16: ){ Chris@16: std::string bits; Chris@16: ar >> BOOST_SERIALIZATION_NVP( bits ); Chris@16: t = std::bitset(bits); Chris@16: } Chris@16: Chris@16: template Chris@16: inline void serialize( Chris@16: Archive & ar, Chris@16: std::bitset & t, Chris@16: const unsigned int version Chris@16: ){ Chris@16: boost::serialization::split_free( ar, t, version ); Chris@16: } Chris@16: Chris@16: // don't track bitsets since that would trigger tracking Chris@16: // all over the program - which probably would be a surprise. Chris@16: // also, tracking would be hard to implement since, we're Chris@16: // serialization a representation of the data rather than Chris@16: // the data itself. Chris@16: template Chris@16: struct tracking_level > Chris@16: : mpl::int_ {} ; Chris@16: Chris@16: } //serialization Chris@16: } //boost Chris@16: Chris@16: #endif // BOOST_SERIALIZATION_BITSET_HPP