Brian Silverman | 8867871 | 2018-08-04 23:56:48 -0700 | [diff] [blame^] | 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 guarentee 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 | |
| 84 | BOOST_SYMBOL_VISIBLE library_version_type |
| 85 | BOOST_ARCHIVE_VERSION(){ |
| 86 | return library_version_type(17); |
| 87 | } |
| 88 | |
| 89 | } // namespace archive |
| 90 | } // namespace boost |