Added boost header
This commit is contained in:
102
test/external/boost/property_tree/ptree_serialization.hpp
vendored
Normal file
102
test/external/boost/property_tree/ptree_serialization.hpp
vendored
Normal file
@@ -0,0 +1,102 @@
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright (C) 2002-2006 Marcin Kalicinski
|
||||
//
|
||||
// Distributed under 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)
|
||||
//
|
||||
// For more information, see www.boost.org
|
||||
// ----------------------------------------------------------------------------
|
||||
#ifndef BOOST_PROPERTY_TREE_PTREE_SERIALIZATION_HPP_INCLUDED
|
||||
#define BOOST_PROPERTY_TREE_PTREE_SERIALIZATION_HPP_INCLUDED
|
||||
|
||||
#include <boost/property_tree/ptree.hpp>
|
||||
|
||||
#include <boost/serialization/nvp.hpp>
|
||||
#include <boost/serialization/collections_save_imp.hpp>
|
||||
#include <boost/serialization/collections_load_imp.hpp>
|
||||
#include <boost/serialization/split_free.hpp>
|
||||
#include <boost/serialization/utility.hpp>
|
||||
|
||||
namespace boost { namespace property_tree
|
||||
{
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// boost::serialization support
|
||||
|
||||
/**
|
||||
* Serialize the property tree to the given archive.
|
||||
* @note In addition to serializing to regular archives, this supports
|
||||
* serializing to archives requiring name-value pairs, e.g. XML
|
||||
* archives. However, the output format in the XML archive is not
|
||||
* guaranteed to be the same as that when using the Boost.PropertyTree
|
||||
* library's @c boost::property_tree::xml_parser::write_xml.
|
||||
* @param ar The archive to which to save the serialized property tree.
|
||||
* This archive should conform to the concept laid out by the
|
||||
* Boost.Serialization library.
|
||||
* @param t The property tree to serialize.
|
||||
* @param file_version file_version for the archive.
|
||||
* @post @c ar will contain the serialized form of @c t.
|
||||
*/
|
||||
template<class Archive, class K, class D, class C>
|
||||
inline void save(Archive &ar,
|
||||
const basic_ptree<K, D, C> &t,
|
||||
const unsigned int file_version)
|
||||
{
|
||||
using namespace boost::serialization;
|
||||
stl::save_collection<Archive, basic_ptree<K, D, C> >(ar, t);
|
||||
ar << make_nvp("data", t.data());
|
||||
}
|
||||
|
||||
/**
|
||||
* De-serialize the property tree to the given archive.
|
||||
* @note In addition to de-serializing from regular archives, this supports
|
||||
* loading from archives requiring name-value pairs, e.g. XML
|
||||
* archives. The format should be that used by
|
||||
* boost::property_tree::save.
|
||||
* @param ar The archive from which to load the serialized property tree.
|
||||
* This archive should conform to the concept laid out by the
|
||||
* Boost.Serialization library.
|
||||
* @param t The property tree to de-serialize.
|
||||
* @param file_version file_version for the archive.
|
||||
* @post @c t will contain the de-serialized data from @c ar.
|
||||
*/
|
||||
template<class Archive, class K, class D, class C>
|
||||
inline void load(Archive &ar,
|
||||
basic_ptree<K, D, C> &t,
|
||||
const unsigned int file_version)
|
||||
{
|
||||
using namespace boost::serialization;
|
||||
// Load children
|
||||
stl::load_collection<Archive,
|
||||
basic_ptree<K, D, C>,
|
||||
stl::archive_input_seq<Archive,
|
||||
basic_ptree<K, D, C> >,
|
||||
stl::no_reserve_imp<
|
||||
basic_ptree<K, D, C> >
|
||||
>(ar, t);
|
||||
|
||||
// Load data (must be after load_collection, as it calls clear())
|
||||
ar >> make_nvp("data", t.data());
|
||||
}
|
||||
|
||||
/**
|
||||
* Load or store the property tree using the given archive.
|
||||
* @param ar The archive from which to load or save the serialized property
|
||||
* tree. The type of this archive will determine whether saving or
|
||||
* loading is performed.
|
||||
* @param t The property tree to load or save.
|
||||
* @param file_version file_version for the archive.
|
||||
*/
|
||||
template<class Archive, class K, class D, class C>
|
||||
inline void serialize(Archive &ar,
|
||||
basic_ptree<K, D, C> &t,
|
||||
const unsigned int file_version)
|
||||
{
|
||||
using namespace boost::serialization;
|
||||
split_free(ar, t, file_version);
|
||||
}
|
||||
|
||||
} }
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user