mirror of
https://github.com/boostorg/core.git
synced 2025-05-09 23:03:54 +00:00
146 lines
3.3 KiB
Plaintext
146 lines
3.3 KiB
Plaintext
[/
|
|
Copyright 2023 Peter Dimov
|
|
Distributed under the Boost Software License, Version 1.0.
|
|
https://boost.org/LICENSE_1_0.txt
|
|
]
|
|
|
|
[section:serialization serialization]
|
|
|
|
[simplesect Authors]
|
|
|
|
* Peter Dimov
|
|
|
|
[endsimplesect]
|
|
|
|
[section Header <boost/core/serialization.hpp>]
|
|
|
|
The header `<boost/core/serialization.hpp>` implements primitives
|
|
that are necessary to implement Boost.Serialization support without
|
|
including a Boost.Serialization header and thereby making a library
|
|
dependent on Boost.Serialization.
|
|
|
|
[section Synopsis]
|
|
|
|
``
|
|
#include <boost/core/nvp.hpp>
|
|
|
|
namespace boost
|
|
{
|
|
namespace serialization
|
|
{
|
|
|
|
// forward declarations
|
|
|
|
template<class T> struct version;
|
|
class access;
|
|
|
|
// core_version_type
|
|
|
|
struct core_version_type;
|
|
|
|
} // namespace serialization
|
|
|
|
namespace core
|
|
{
|
|
|
|
// nvp
|
|
|
|
using serialization::nvp;
|
|
using serialization::make_nvp;
|
|
|
|
// split_free
|
|
|
|
template<class Ar, class T> void split_free( Ar& ar, T& t, unsigned int v );
|
|
|
|
// split_member
|
|
|
|
template<class Ar, class T> void split_member( Ar& ar, T& t, unsigned int v );
|
|
|
|
// load_construct_data_adl
|
|
|
|
template<class Ar, class T> void load_construct_data_adl( Ar& ar, T* t, unsigned int v );
|
|
|
|
// save_construct_data_adl
|
|
|
|
template<class Ar, class T> void save_construct_data_adl( Ar& ar, T const* t, unsigned int v );
|
|
|
|
} // namespace core
|
|
} // namespace boost
|
|
``
|
|
|
|
[endsect]
|
|
|
|
[section `core_version_type`]
|
|
|
|
``
|
|
struct core_version_type
|
|
{
|
|
unsigned int version_;
|
|
|
|
core_version_type( unsigned int version ): version_( version ) {}
|
|
operator unsigned int () const { return version_; }
|
|
};
|
|
``
|
|
|
|
`core_version_type` is a Core reimplementation of
|
|
`boost::serialization::version_type`, needed to call ADL serialization
|
|
primitives such as, for example, `load_construct_data` below.
|
|
|
|
It's defined in the `serialization` namespace instead of the `core`
|
|
namespace because its only purpose is to add `boost::serialization` to
|
|
the list of the associated namespaces of the corresponding call.
|
|
|
|
[endsect]
|
|
|
|
[section `split_free`]
|
|
|
|
`template<class Ar, class T> inline void split_free( Ar& ar, T& t, unsigned int v );`
|
|
|
|
`boost::core::split_free` is a Core reimplementation of
|
|
`boost::serialization::split_free`.
|
|
|
|
* *Effects:*
|
|
* If `Ar::is_saving::value` is `true`, calls `save( ar, t, core_version_type( v ) )`;
|
|
* Otherwise, calls `load( ar, t, core_version_type( v ) )`.
|
|
|
|
[endsect]
|
|
|
|
[section `split_member`]
|
|
|
|
`template<class Ar, class T> void split_member( Ar& ar, T& t, unsigned int v );`
|
|
|
|
`boost::core::split_member` is a Core reimplementation of
|
|
`boost::serialization::split_member`.
|
|
|
|
* *Effects:*
|
|
* If `Ar::is_saving::value` is `true`, calls `t.save( ar, v )`;
|
|
* Otherwise, calls `t.load( ar, v )`.
|
|
|
|
[endsect]
|
|
|
|
[section `load_construct_data_adl`]
|
|
|
|
`template<class Ar, class T> void load_construct_data_adl( Ar& ar, T* t, unsigned int v );`
|
|
|
|
`boost::core::load_construct_data_adl` is a Core reimplementation of
|
|
`boost::serialization::load_construct_data_adl`.
|
|
|
|
* *Effects:* `load_construct_data( ar, t, serialization::core_version_type( v ) );`.
|
|
|
|
[endsect]
|
|
|
|
[section `save_construct_data_adl`]
|
|
|
|
`template<class Ar, class T> void save_construct_data_adl( Ar& ar, T const* t, unsigned int v );`
|
|
|
|
`boost::core::save_construct_data_adl` is a Core reimplementation of
|
|
`boost::serialization::save_construct_data_adl`.
|
|
|
|
* *Effects:* `save_construct_data( ar, t, serialization::core_version_type( v ) );`.
|
|
|
|
[endsect]
|
|
|
|
[endsect]
|
|
|
|
[endsect]
|