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 | |
38 | namespace boost { |
39 | namespace archive { |
40 | |
41 | /////////////////////////////////////////////////////////////////////// |
42 | // constants used in archive signature |
43 | //This should never ever change. note that is not an std::string |
44 | // string. |
45 | BOOST_SYMBOL_VISIBLE const char * |
46 | BOOST_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 |
88 | BOOST_SYMBOL_VISIBLE boost::serialization::library_version_type |
89 | BOOST_ARCHIVE_VERSION(){ |
90 | return boost::serialization::library_version_type(20); |
91 | } |
92 | |
93 | } // namespace archive |
94 | } // namespace boost |
95 | |