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