5#include <boost/archive/binary_oarchive.hpp>
6#include <boost/archive/binary_iarchive.hpp>
7#include <boost/archive/xml_iarchive.hpp>
8#include <boost/archive/xml_oarchive.hpp>
9#include <boost/serialization/nvp.hpp>
10#include <boost/serialization/split_free.hpp>
11#include <boost/unordered_map.hpp>
15 namespace serialization
17 template<
class Archive,
class Type>
18 void save(Archive& archive,
const std::shared_ptr<Type>& value,
const unsigned int )
20 Type* data = value.get();
24 template<
class Archive,
class Type>
25 void load(Archive& archive, std::shared_ptr<Type>& value,
const unsigned int )
30 typedef std::weak_ptr<Type> WeakPtr;
31 static boost::unordered_map<void*, WeakPtr> hash;
33 if (hash[data].expired())
35 value = std::shared_ptr<Type>(data);
38 else value = hash[data].lock();
41 template<
class Archive,
class Type>
42 inline void serialize(Archive& archive, std::shared_ptr<Type>& value,
const unsigned int version)
44 split_free(archive, value, version);