| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 | #ifndef  BOOST_SERIALIZATION_HASH_SET_HPP#define BOOST_SERIALIZATION_HASH_SET_HPP// MS compatible compilers support #pragma once#if defined(_MSC_VER)# pragma once#endif/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8// hash_set.hpp: serialization for stl hash_set templates// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .// Use, modification and distribution is subject to the Boost Software// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at// http://www.boost.org/LICENSE_1_0.txt)//  See http://www.boost.org for updates, documentation, and revision history.#include <boost/config.hpp>#ifdef BOOST_HAS_HASH#include BOOST_HASH_SET_HEADER#include <boost/serialization/hash_collections_save_imp.hpp>#include <boost/serialization/hash_collections_load_imp.hpp>#include <boost/serialization/split_free.hpp>#include <boost/move/utility_core.hpp>namespace boost {namespace serialization {namespace stl {// hash_set inputtemplate<class Archive, class Container>struct archive_input_hash_set{    inline void operator()(        Archive &ar,        Container &s,        const unsigned int v    ){        typedef typename Container::value_type type;        detail::stack_construct<Archive, type> t(ar, v);        // borland fails silently w/o full namespace        ar >> boost::serialization::make_nvp("item", t.reference());        std::pair<typename Container::const_iterator, bool> result =            s.insert(boost::move(t.reference()));        if(result.second)            ar.reset_object_address(& (* result.first), & t.reference());    }};// hash_multiset inputtemplate<class Archive, class Container>struct archive_input_hash_multiset{    inline void operator()(        Archive &ar,        Container &s,        const unsigned int v    ){        typedef typename Container::value_type type;        detail::stack_construct<Archive, type> t(ar, v);        // borland fails silently w/o full namespace        ar >> boost::serialization::make_nvp("item", t.reference());        typename Container::const_iterator result            = s.insert(boost::move(t.reference()));        ar.reset_object_address(& (* result), & t.reference());    }};} // stltemplate<    class Archive,    class Key,    class HashFcn,    class EqualKey,    class Allocator>inline void save(    Archive & ar,    const BOOST_STD_EXTENSION_NAMESPACE::hash_set<        Key, HashFcn, EqualKey, Allocator    > &t,    const unsigned int file_version){    boost::serialization::stl::save_hash_collection<        Archive,        BOOST_STD_EXTENSION_NAMESPACE::hash_set<            Key, HashFcn, EqualKey, Allocator        >    >(ar, t);}template<    class Archive,    class Key,    class HashFcn,    class EqualKey,    class Allocator>inline void load(    Archive & ar,    BOOST_STD_EXTENSION_NAMESPACE::hash_set<        Key, HashFcn, EqualKey, Allocator    > &t,    const unsigned int file_version){    boost::serialization::stl::load_hash_collection<        Archive,        BOOST_STD_EXTENSION_NAMESPACE::hash_set<            Key, HashFcn, EqualKey, Allocator        >,        boost::serialization::stl::archive_input_hash_set<            Archive,            BOOST_STD_EXTENSION_NAMESPACE::hash_set<                Key, HashFcn, EqualKey, Allocator            >        >    >(ar, t);}// split non-intrusive serialization function member into separate// non intrusive save/load member functionstemplate<    class Archive,    class Key,    class HashFcn,    class EqualKey,    class Allocator>inline void serialize(    Archive & ar,    BOOST_STD_EXTENSION_NAMESPACE::hash_set<        Key, HashFcn, EqualKey, Allocator    > &t,    const unsigned int file_version){    boost::serialization::split_free(ar, t, file_version);}// hash_multisettemplate<    class Archive,    class Key,    class HashFcn,    class EqualKey,    class Allocator>inline void save(    Archive & ar,    const BOOST_STD_EXTENSION_NAMESPACE::hash_multiset<        Key, HashFcn, EqualKey, Allocator    > &t,    const unsigned int file_version){    boost::serialization::stl::save_hash_collection<        Archive,        BOOST_STD_EXTENSION_NAMESPACE::hash_multiset<            Key, HashFcn, EqualKey, Allocator        >    >(ar, t);}template<    class Archive,    class Key,    class HashFcn,    class EqualKey,    class Allocator>inline void load(    Archive & ar,    BOOST_STD_EXTENSION_NAMESPACE::hash_multiset<        Key, HashFcn, EqualKey, Allocator    > &t,    const unsigned int file_version){    boost::serialization::stl::load_hash_collection<        Archive,        BOOST_STD_EXTENSION_NAMESPACE::hash_multiset<            Key, HashFcn, EqualKey, Allocator        >,        boost::serialization::stl::archive_input_hash_multiset<            Archive,            BOOST_STD_EXTENSION_NAMESPACE::hash_multiset<                Key, HashFcn, EqualKey, Allocator            >        >    >(ar, t);}// split non-intrusive serialization function member into separate// non intrusive save/load member functionstemplate<    class Archive,    class Key,    class HashFcn,    class EqualKey,    class Allocator>inline void serialize(    Archive & ar,    BOOST_STD_EXTENSION_NAMESPACE::hash_multiset<        Key, HashFcn, EqualKey, Allocator    > & t,    const unsigned int file_version){    boost::serialization::split_free(ar, t, file_version);}} // namespace serialization} // namespace boost#include <boost/serialization/collection_traits.hpp>BOOST_SERIALIZATION_COLLECTION_TRAITS(BOOST_STD_EXTENSION_NAMESPACE::hash_set)BOOST_SERIALIZATION_COLLECTION_TRAITS(BOOST_STD_EXTENSION_NAMESPACE::hash_multiset)#endif // BOOST_HAS_HASH#endif // BOOST_SERIALIZATION_HASH_SET_HPP
 |