1/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
2// basic_archive.cpp:
3
4// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
5// Use, modification and distribution is subject to the Boost Software
6// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
7// http://www.boost.org/LICENSE_1_0.txt)
8
9// See http://www.boost.org for updates, documentation, and revision history.
10
11//////////////////////////////////////////////////////////////////////
12//
13// objects are stored as
14//
15// class_id* // -1 for a null pointer
16// if a new class id
17// [
18// exported key - class name*
19// tracking level - always/never
20// class version
21// ]
22//
23// if tracking
24// [
25// object_id
26// ]
27//
28// [ // if a new object id
29// data...
30// ]
31//
32// * required only for pointers - optional for objects
33
34#define BOOST_ARCHIVE_SOURCE
35#include <boost/serialization/config.hpp>
36#include <boost/archive/basic_archive.hpp>
37
38namespace boost {
39namespace archive {
40
41///////////////////////////////////////////////////////////////////////
42// constants used in archive signature
43//This should never ever change. note that is not an std::string
44// string.
45BOOST_SYMBOL_VISIBLE const char *
46BOOST_ARCHIVE_SIGNATURE(){
47 return "serialization::archive";
48}
49
50// this should change if the capabilities are added to the library
51// such that archives can be created which can't be read by previous
52// versions of this library
53// 1 - initial version
54// 2 - made address tracking optional
55// 3 - numerous changes - can't guarantee compatibility with previous versions
56// 4 - Boost 1.34
57// added item_version to properly support versioning for collections
58// 5 - Boost 1.36
59// changed serialization of collections: adding version even for primitive
60// types caused backwards compatibility breaking change in 1.35
61// 6 - Boost 1.41 17 Nov 2009
62// serializing collection sizes as std::size_t
63// 7 Boost 1.42 2 Feb 2010
64// error - changed binary version to 16 bits w/o changing library version #
65// That is - binary archives are recorded with #6 even though they are
66// different from the previous versions. This means that binary archives
67// created with versions 1.42 and 1.43 will have to be fixed with a special
68// program which fixes the library version # in the header
69// Boost 1.43 6 May 2010
70// no change
71// 8 - Boost 1.44
72// separated version_type into library_version_type and class_version_type
73// changed version_type to be stored as 8 bits.
74// 10- fixed base64 output/input.
75// 11- not changes
76// 12- improved serialization of collections
77// 13- simplified visibility, removed Borland, removed pfto
78// 14- improved visibility, refactor map/set
79// 15- corrections to optional and collection loading
80// 16- eliminated dependency on <codecvt> which is buggy in some libraries
81// and now officially deprecated in the standard
82// 17- Boost 1.68 August 2018
83// 18- addressed undefined behavior in archive constructors.
84// init() called from base wrote archive header before archive
85// was fully constructed.
86// 19- Boost 1.76 April 2021
87// 20- Boost 1.84 April 2021
88BOOST_SYMBOL_VISIBLE boost::serialization::library_version_type
89BOOST_ARCHIVE_VERSION(){
90 return boost::serialization::library_version_type(20);
91}
92
93} // namespace archive
94} // namespace boost
95

source code of boost/libs/serialization/src/basic_archive.cpp