annotate DEPENDENCIES/generic/include/boost/serialization/unordered_set.hpp @ 125:34e428693f5d vext

Vext -> Repoint
author Chris Cannam
date Thu, 14 Jun 2018 11:15:39 +0100
parents f46d142149f5
children
rev   line source
Chris@102 1 #ifndef BOOST_SERIALIZATION_UNORDERED_SET_HPP
Chris@102 2 #define BOOST_SERIALIZATION_UNORDERED_SET_HPP
Chris@102 3
Chris@102 4 // MS compatible compilers support #pragma once
Chris@102 5 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
Chris@102 6 # pragma once
Chris@102 7 #endif
Chris@102 8
Chris@102 9 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
Chris@102 10 // unordered_set.hpp: serialization for stl unordered_set templates
Chris@102 11
Chris@102 12 // (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
Chris@102 13 // (C) Copyright 2014 Jim Bell
Chris@102 14 // Use, modification and distribution is subject to the Boost Software
Chris@102 15 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
Chris@102 16 // http://www.boost.org/LICENSE_1_0.txt)
Chris@102 17
Chris@102 18 // See http://www.boost.org for updates, documentation, and revision history.
Chris@102 19
Chris@102 20 #include <boost/config.hpp>
Chris@102 21
Chris@102 22 #include <unordered_set>
Chris@102 23
Chris@102 24 #include <boost/serialization/unordered_collections_save_imp.hpp>
Chris@102 25 #include <boost/serialization/unordered_collections_load_imp.hpp>
Chris@102 26 #include <boost/serialization/split_free.hpp>
Chris@102 27
Chris@102 28 namespace boost {
Chris@102 29 namespace serialization {
Chris@102 30
Chris@102 31 namespace stl {
Chris@102 32
Chris@102 33 // unordered_set input
Chris@102 34 template<class Archive, class Container>
Chris@102 35 struct archive_input_unordered_set
Chris@102 36 {
Chris@102 37 inline void operator()(
Chris@102 38 Archive &ar,
Chris@102 39 Container &s,
Chris@102 40 const unsigned int v
Chris@102 41 ){
Chris@102 42 typedef typename Container::value_type type;
Chris@102 43 detail::stack_construct<Archive, type> t(ar, v);
Chris@102 44 // borland fails silently w/o full namespace
Chris@102 45 ar >> boost::serialization::make_nvp("item", t.reference());
Chris@102 46 std::pair<typename Container::const_iterator, bool> result =
Chris@102 47 s.insert(t.reference());
Chris@102 48 if(result.second)
Chris@102 49 ar.reset_object_address(& (* result.first), & t.reference());
Chris@102 50 }
Chris@102 51 };
Chris@102 52
Chris@102 53 // unordered_multiset input
Chris@102 54 template<class Archive, class Container>
Chris@102 55 struct archive_input_unordered_multiset
Chris@102 56 {
Chris@102 57 inline void operator()(
Chris@102 58 Archive &ar,
Chris@102 59 Container &s,
Chris@102 60 const unsigned int v
Chris@102 61 ){
Chris@102 62 typedef typename Container::value_type type;
Chris@102 63 detail::stack_construct<Archive, type> t(ar, v);
Chris@102 64 // borland fails silently w/o full namespace
Chris@102 65 ar >> boost::serialization::make_nvp("item", t.reference());
Chris@102 66 typename Container::const_iterator result
Chris@102 67 = s.insert(t.reference());
Chris@102 68 ar.reset_object_address(& (* result), & t.reference());
Chris@102 69 }
Chris@102 70 };
Chris@102 71
Chris@102 72 } // stl
Chris@102 73
Chris@102 74 template<
Chris@102 75 class Archive,
Chris@102 76 class Key,
Chris@102 77 class HashFcn,
Chris@102 78 class EqualKey,
Chris@102 79 class Allocator
Chris@102 80 >
Chris@102 81 inline void save(
Chris@102 82 Archive & ar,
Chris@102 83 const std::unordered_set<
Chris@102 84 Key, HashFcn, EqualKey, Allocator
Chris@102 85 > &t,
Chris@102 86 const unsigned int /*file_version*/
Chris@102 87 ){
Chris@102 88 boost::serialization::stl::save_unordered_collection<
Chris@102 89 Archive,
Chris@102 90 std::unordered_set<
Chris@102 91 Key, HashFcn, EqualKey, Allocator
Chris@102 92 >
Chris@102 93 >(ar, t);
Chris@102 94 }
Chris@102 95
Chris@102 96 template<
Chris@102 97 class Archive,
Chris@102 98 class Key,
Chris@102 99 class HashFcn,
Chris@102 100 class EqualKey,
Chris@102 101 class Allocator
Chris@102 102 >
Chris@102 103 inline void load(
Chris@102 104 Archive & ar,
Chris@102 105 std::unordered_set<
Chris@102 106 Key, HashFcn, EqualKey, Allocator
Chris@102 107 > &t,
Chris@102 108 const unsigned int /*file_version*/
Chris@102 109 ){
Chris@102 110 boost::serialization::stl::load_unordered_collection<
Chris@102 111 Archive,
Chris@102 112 std::unordered_set<
Chris@102 113 Key, HashFcn, EqualKey, Allocator
Chris@102 114 >,
Chris@102 115 boost::serialization::stl::archive_input_unordered_set<
Chris@102 116 Archive,
Chris@102 117 std::unordered_set<
Chris@102 118 Key, HashFcn, EqualKey, Allocator
Chris@102 119 >
Chris@102 120 >
Chris@102 121 >(ar, t);
Chris@102 122 }
Chris@102 123
Chris@102 124 // split non-intrusive serialization function member into separate
Chris@102 125 // non intrusive save/load member functions
Chris@102 126 template<
Chris@102 127 class Archive,
Chris@102 128 class Key,
Chris@102 129 class HashFcn,
Chris@102 130 class EqualKey,
Chris@102 131 class Allocator
Chris@102 132 >
Chris@102 133 inline void serialize(
Chris@102 134 Archive & ar,
Chris@102 135 std::unordered_set<
Chris@102 136 Key, HashFcn, EqualKey, Allocator
Chris@102 137 > &t,
Chris@102 138 const unsigned int file_version
Chris@102 139 ){
Chris@102 140 boost::serialization::split_free(ar, t, file_version);
Chris@102 141 }
Chris@102 142
Chris@102 143 // unordered_multiset
Chris@102 144 template<
Chris@102 145 class Archive,
Chris@102 146 class Key,
Chris@102 147 class HashFcn,
Chris@102 148 class EqualKey,
Chris@102 149 class Allocator
Chris@102 150 >
Chris@102 151 inline void save(
Chris@102 152 Archive & ar,
Chris@102 153 const std::unordered_multiset<
Chris@102 154 Key, HashFcn, EqualKey, Allocator
Chris@102 155 > &t,
Chris@102 156 const unsigned int /*file_version*/
Chris@102 157 ){
Chris@102 158 boost::serialization::stl::save_unordered_collection<
Chris@102 159 Archive,
Chris@102 160 std::unordered_multiset<
Chris@102 161 Key, HashFcn, EqualKey, Allocator
Chris@102 162 >
Chris@102 163 >(ar, t);
Chris@102 164 }
Chris@102 165
Chris@102 166 template<
Chris@102 167 class Archive,
Chris@102 168 class Key,
Chris@102 169 class HashFcn,
Chris@102 170 class EqualKey,
Chris@102 171 class Allocator
Chris@102 172 >
Chris@102 173 inline void load(
Chris@102 174 Archive & ar,
Chris@102 175 std::unordered_multiset<
Chris@102 176 Key, HashFcn, EqualKey, Allocator
Chris@102 177 > &t,
Chris@102 178 const unsigned int /*file_version*/
Chris@102 179 ){
Chris@102 180 boost::serialization::stl::load_unordered_collection<
Chris@102 181 Archive,
Chris@102 182 std::unordered_multiset<
Chris@102 183 Key, HashFcn, EqualKey, Allocator
Chris@102 184 >,
Chris@102 185 boost::serialization::stl::archive_input_unordered_multiset<
Chris@102 186 Archive,
Chris@102 187 std::unordered_multiset<
Chris@102 188 Key, HashFcn, EqualKey, Allocator
Chris@102 189 >
Chris@102 190 >
Chris@102 191 >(ar, t);
Chris@102 192 }
Chris@102 193
Chris@102 194 // split non-intrusive serialization function member into separate
Chris@102 195 // non intrusive save/load member functions
Chris@102 196 template<
Chris@102 197 class Archive,
Chris@102 198 class Key,
Chris@102 199 class HashFcn,
Chris@102 200 class EqualKey,
Chris@102 201 class Allocator
Chris@102 202 >
Chris@102 203 inline void serialize(
Chris@102 204 Archive & ar,
Chris@102 205 std::unordered_multiset<
Chris@102 206 Key, HashFcn, EqualKey, Allocator
Chris@102 207 > &t,
Chris@102 208 const unsigned int file_version
Chris@102 209 ){
Chris@102 210 boost::serialization::split_free(ar, t, file_version);
Chris@102 211 }
Chris@102 212
Chris@102 213 } // namespace serialization
Chris@102 214 } // namespace boost
Chris@102 215
Chris@102 216 #endif // BOOST_SERIALIZATION_UNORDERED_SET_HPP