// Copyright (c) 2012-2013 The Cryptonote developers // Distributed under the MIT/X11 software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. #pragma once #include #include #include namespace boost { namespace serialization { template inline void save(Archive &a, const std::unordered_map &x, const boost::serialization::version_type ver) { size_t s = x.size(); a << s; BOOST_FOREACH(auto& v, x) { a << v.first; a << v.second; } } template inline void load(Archive &a, std::unordered_map &x, const boost::serialization::version_type ver) { x.clear(); size_t s = 0; a >> s; for(size_t i = 0; i != s; i++) { h_key k; hval v; a >> k; a >> v; x.insert(std::pair(k, v)); } } template inline void save(Archive &a, const std::unordered_set &x, const boost::serialization::version_type ver) { size_t s = x.size(); a << s; BOOST_FOREACH(auto& v, x) { a << v; } } template inline void load(Archive &a, std::unordered_set &x, const boost::serialization::version_type ver) { x.clear(); size_t s = 0; a >> s; for(size_t i = 0; i != s; i++) { hval v; a >> v; x.insert(v); } } template inline void serialize(Archive &a, std::unordered_map &x, const boost::serialization::version_type ver) { split_free(a, x, ver); } template inline void serialize(Archive &a, std::unordered_set &x, const boost::serialization::version_type ver) { split_free(a, x, ver); } } }