1/*!
2 * \file bitset.hpp
3 * \brief Provides Boost.Serialization support for std::bitset
4 * \author Brian Ravnsgaard Riis
5 * \author Kenneth Riddile
6 * \date 16.09.2004, updated 04.03.2009
7 * \copyright 2004 Brian Ravnsgaard Riis
8 * \license Boost Software License 1.0
9 */
10#ifndef BOOST_SERIALIZATION_BITSET_HPP
11#define BOOST_SERIALIZATION_BITSET_HPP
12
13// MS compatible compilers support #pragma once
14#if defined(_MSC_VER)
15# pragma once
16#endif
17
18#include <bitset>
19#include <cstddef> // size_t
20
21#include <boost/config.hpp>
22#include <boost/serialization/split_free.hpp>
23#include <boost/serialization/string.hpp>
24#include <boost/serialization/nvp.hpp>
25
26namespace boost{
27namespace serialization{
28
29template <class Archive, std::size_t size>
30inline void save(
31 Archive & ar,
32 std::bitset<size> const & t,
33 const unsigned int /* version */
34){
35 const std::string bits = t.template to_string<
36 std::string::value_type,
37 std::string::traits_type,
38 std::string::allocator_type
39 >();
40 ar << BOOST_SERIALIZATION_NVP( bits );
41}
42
43template <class Archive, std::size_t size>
44inline void load(
45 Archive & ar,
46 std::bitset<size> & t,
47 const unsigned int /* version */
48){
49 std::string bits;
50 ar >> BOOST_SERIALIZATION_NVP( bits );
51 t = std::bitset<size>(bits);
52}
53
54template <class Archive, std::size_t size>
55inline void serialize(
56 Archive & ar,
57 std::bitset<size> & t,
58 const unsigned int version
59){
60 boost::serialization::split_free( ar, t, version );
61}
62
63// don't track bitsets since that would trigger tracking
64// all over the program - which probably would be a surprise.
65// also, tracking would be hard to implement since, we're
66// serialization a representation of the data rather than
67// the data itself.
68template <std::size_t size>
69struct tracking_level<std::bitset<size> >
70 : mpl::int_<track_never> {} ;
71
72} //serialization
73} //boost
74
75#endif // BOOST_SERIALIZATION_BITSET_HPP
76

source code of boost/boost/serialization/bitset.hpp