Chris@102: #ifndef BOOST_SERIALIZATION_UNIQUE_PTR_HPP Chris@102: #define BOOST_SERIALIZATION_UNIQUE_PTR_HPP Chris@102: Chris@102: // MS compatible compilers support #pragma once Chris@102: #if defined(_MSC_VER) Chris@102: # pragma once Chris@102: #endif Chris@102: Chris@102: /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 Chris@102: // unique_ptr.hpp: Chris@102: Chris@102: // (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . Chris@102: // Use, modification and distribution is subject to the Boost Software Chris@102: // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at Chris@102: // http://www.boost.org/LICENSE_1_0.txt) Chris@102: Chris@102: // See http://www.boost.org for updates, documentation, and revision history. Chris@102: #include Chris@102: #include Chris@102: #include Chris@102: Chris@102: namespace boost { Chris@102: namespace serialization { Chris@102: Chris@102: ///////////////////////////////////////////////////////////// Chris@102: // implement serialization for unique_ptr< T > Chris@102: // note: this must be added to the boost namespace in order to Chris@102: // be called by the library Chris@102: template Chris@102: inline void save( Chris@102: Archive & ar, Chris@102: const std::unique_ptr< T > &t, Chris@102: const unsigned int file_version Chris@102: ){ Chris@102: // only the raw pointer has to be saved Chris@102: // the ref count is rebuilt automatically on load Chris@102: const T * const tx = t.get(); Chris@102: ar << BOOST_SERIALIZATION_NVP(tx); Chris@102: } Chris@102: Chris@102: template Chris@102: inline void load( Chris@102: Archive & ar, Chris@102: std::unique_ptr< T > &t, Chris@102: const unsigned int file_version Chris@102: ){ Chris@102: T *tx; Chris@102: ar >> BOOST_SERIALIZATION_NVP(tx); Chris@102: // note that the reset automagically maintains the reference count Chris@102: t.reset(tx); Chris@102: } Chris@102: Chris@102: // split non-intrusive serialization function member into separate Chris@102: // non intrusive save/load member functions Chris@102: template Chris@102: inline void serialize( Chris@102: Archive & ar, Chris@102: std::unique_ptr< T > &t, Chris@102: const unsigned int file_version Chris@102: ){ Chris@102: boost::serialization::split_free(ar, t, file_version); Chris@102: } Chris@102: Chris@102: } // namespace serialization Chris@102: } // namespace boost Chris@102: Chris@102: Chris@102: #endif // BOOST_SERIALIZATION_UNIQUE_PTR_HPP