diff --git a/doc/unordered/changes.adoc b/doc/unordered/changes.adoc index ed0640ac..18e5be56 100644 --- a/doc/unordered/changes.adoc +++ b/doc/unordered/changes.adoc @@ -14,6 +14,7 @@ with serial and parallel variants. `boost::concurrent_flat_map` and vice versa. * Added debug mode mechanisms for detecting illegal reentrancies into a `boost::concurrent_flat_map` from user code. +* Added Boost.Serialization support to all containers and their (non-local) iterator types. == Release 1.83.0 - Major update diff --git a/doc/unordered/concurrent_flat_map.adoc b/doc/unordered/concurrent_flat_map.adoc index f059ca5c..bcfc719e 100644 --- a/doc/unordered/concurrent_flat_map.adoc +++ b/doc/unordered/concurrent_flat_map.adoc @@ -1518,3 +1518,33 @@ Equivalent to ----- c.xref:#concurrent_flat_map_erase_if[erase_if](pred); ----- + +=== Serialization + +``concurrent_flat_map``s can be archived/retrieved by means of +link:../../../serialization/index.html[Boost.Serialization^] using the API provided +by this library. Both regular and XML archives are supported. + +==== Saving an concurrent_flat_map to an archive + +Saves all the elements of a `concurrent_flat_map` `x` to an archive (XML archive) `ar`. + +[horizontal] +Requires:;; `std::remove_const::type` and `std::remove_const::type` +are serializable (XML serializable), and they do support Boost.Serialization +`save_construct_data`/`load_construct_data` protocol (automatically suported by +https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^] +types). +Concurrency:;; Blocking on `x`. + +--- + +==== Loading an concurrent_flat_map from an archive + +Deletes all preexisting elements of a `concurrent_flat_map` `x` and inserts +from an archive (XML archive) `ar` restored copies of the elements of the +original `concurrent_flat_map` `other` saved to the storage read by `ar`. + +[horizontal] +Requires:;; `x.key_equal()` is functionally equivalent to `other.key_equal()`. +Concurrency:;; Blocking on `x`. diff --git a/doc/unordered/unordered_flat_map.adoc b/doc/unordered/unordered_flat_map.adoc index 543db307..7018433b 100644 --- a/doc/unordered/unordered_flat_map.adoc +++ b/doc/unordered/unordered_flat_map.adoc @@ -1464,4 +1464,54 @@ for (auto i = c.begin(), last = c.end(); i != last; ) { return original_size - c.size(); ``` +=== Serialization + +``unordered_flat_map``s can be archived/retrieved by means of +link:../../../serialization/index.html[Boost.Serialization^] using the API provided +by this library. Both regular and XML archives are supported. + +==== Saving an unordered_flat_map to an archive + +Saves all the elements of an `unordered_flat_map` `x` to an archive (XML archive) `ar`. + +[horizontal] +Requires:;; `std::remove_const::type` and `std::remove_const::type` +are serializable (XML serializable), and they do support Boost.Serialization +`save_construct_data`/`load_construct_data` protocol (automatically suported by +https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^] +types). + --- + +==== Loading an unordered_flat_map from an archive + +Deletes all preexisting elements of an `unordered_flat_map` `x` and inserts +from an archive (XML archive) `ar` restored copies of the elements of the +original `unordered_flat_map` `other` saved to the storage read by `ar`. + +[horizontal] +Requires:;; `x.key_equal()` is functionally equivalent to `other.key_equal()`. + +--- + +==== Saving an iterator/const_iterator to an archive + +Saves the positional information of an `iterator` (`const_iterator`) `it` +to an archive (XML archive) `ar`. `it` can be and `end()` iterator. + +[horizontal] +Requires:;; The `unordered_flat_map` `x` pointed to by `it` has been previously saved to `ar`, +and no modifying operations have been issued on `x` between saving of `x` and +saving of `it`. + +--- + +==== Loading an iterator/const_iterator from an archive + +Makes an `iterator` (`const_iterator`) `it` point to the restored position of +the original `iterator` (`const_iterator`) saved to the storage read by +an archive (XML archive) `ar`. + +[horizontal] +Requires:;; If `x` is the `unordered_flat_map` `it` points to, no modifying operations +have been issued on `x` between loading of `x` and loading of `it`. diff --git a/doc/unordered/unordered_flat_set.adoc b/doc/unordered/unordered_flat_set.adoc index 391d7e12..68410ba5 100644 --- a/doc/unordered/unordered_flat_set.adoc +++ b/doc/unordered/unordered_flat_set.adoc @@ -1201,4 +1201,54 @@ for (auto i = c.begin(), last = c.end(); i != last; ) { return original_size - c.size(); ``` +=== Serialization + +``unordered_flat_set``s can be archived/retrieved by means of +link:../../../serialization/index.html[Boost.Serialization^] using the API provided +by this library. Both regular and XML archives are supported. + +==== Saving an unordered_flat_set to an archive + +Saves all the elements of an `unordered_flat_set` `x` to an archive (XML archive) `ar`. + +[horizontal] +Requires:;; `value_type` +is serializable (XML serializable), and it supports Boost.Serialization +`save_construct_data`/`load_construct_data` protocol (automatically suported by +https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^] +types). + --- + +==== Loading an unordered_flat_set from an archive + +Deletes all preexisting elements of an `unordered_flat_set` `x` and inserts +from an archive (XML archive) `ar` restored copies of the elements of the +original `unordered_flat_set` `other` saved to the storage read by `ar`. + +[horizontal] +Requires:;; `x.key_equal()` is functionally equivalent to `other.key_equal()`. + +--- + +==== Saving an iterator/const_iterator to an archive + +Saves the positional information of an `iterator` (`const_iterator`) `it` +to an archive (XML archive) `ar`. `it` can be and `end()` iterator. + +[horizontal] +Requires:;; The `unordered_flat_set` `x` pointed to by `it` has been previously saved to `ar`, +and no modifying operations have been issued on `x` between saving of `x` and +saving of `it`. + +--- + +==== Loading an iterator/const_iterator from an archive + +Makes an `iterator` (`const_iterator`) `it` point to the restored position of +the original `iterator` (`const_iterator`) saved to the storage read by +an archive (XML archive) `ar`. + +[horizontal] +Requires:;; If `x` is the `unordered_flat_set` `it` points to, no modifying operations +have been issued on `x` between loading of `x` and loading of `it`. diff --git a/doc/unordered/unordered_map.adoc b/doc/unordered/unordered_map.adoc index 02d95ac2..d01944a0 100644 --- a/doc/unordered/unordered_map.adoc +++ b/doc/unordered/unordered_map.adoc @@ -323,7 +323,12 @@ The elements are organized into buckets. Keys with the same hash code are stored The number of buckets can be automatically increased by a call to insert, or as the result of calling rehash. ---- +=== Configuration macros + +==== `BOOST_UNORDERED_ENABLE_SERIALIZATION_COMPATIBILITY_V0` + +Globally define this macro to support loading of ``unordered_map``s saved to +a Boost.Serialization archive with a version of Boost prior to Boost 1.84. === Typedefs @@ -1825,4 +1830,59 @@ for (auto i = c.begin(), last = c.end(); i != last; ) { return original_size - c.size(); ``` +=== Serialization + +``unordered_map``s can be archived/retrieved by means of +link:../../../serialization/index.html[Boost.Serialization^] using the API provided +by this library. Both regular and XML archives are supported. + +==== Saving an unordered_map to an archive + +Saves all the elements of an `unordered_map` `x` to an archive (XML archive) `ar`. + +[horizontal] +Requires:;; `std::remove_const::type` and `std::remove_const::type` +are serializable (XML serializable), and they do support Boost.Serialization +`save_construct_data`/`load_construct_data` protocol (automatically suported by +https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^] +types). + --- + +==== Loading an unordered_map from an archive + +Deletes all preexisting elements of an `unordered_map` `x` and inserts +from an archive (XML archive) `ar` restored copies of the elements of the +original `unordered_map` `other` saved to the storage read by `ar`. + +[horizontal] +Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[EmplaceConstructible^] +from `(std::remove_const::type&&, std::remove_const::type&&)`. +`x.key_equal()` is functionally equivalent to `other.key_equal()`. +Note:;; If the archive was saved using a release of Boost prior to Boost 1.84, +the configuration macro `BOOST_UNORDERED_ENABLE_SERIALIZATION_COMPATIBILITY_V0` +has to be globally defined for this operation to succeed; otherwise, an exception is thrown. + +--- + +==== Saving an iterator/const_iterator to an archive + +Saves the positional information of an `iterator` (`const_iterator`) `it` +to an archive (XML archive) `ar`. `it` can be and `end()` iterator. + +[horizontal] +Requires:;; The `unordered_map` `x` pointed to by `it` has been previously saved to `ar`, +and no modifying operations have been issued on `x` between saving of `x` and +saving of `it`. + +--- + +==== Loading an iterator/const_iterator from an archive + +Makes an `iterator` (`const_iterator`) `it` point to the restored position of +the original `iterator` (`const_iterator`) saved to the storage read by +an archive (XML archive) `ar`. + +[horizontal] +Requires:;; If `x` is the `unordered_map` `it` points to, no modifying operations +have been issued on `x` between loading of `x` and loading of `it`. diff --git a/doc/unordered/unordered_multimap.adoc b/doc/unordered/unordered_multimap.adoc index 7a6a09d7..52b23d9a 100644 --- a/doc/unordered/unordered_multimap.adoc +++ b/doc/unordered/unordered_multimap.adoc @@ -290,6 +290,13 @@ The elements are organized into buckets. Keys with the same hash code are stored The number of buckets can be automatically increased by a call to insert, or as the result of calling rehash. +=== Configuration macros + +==== `BOOST_UNORDERED_ENABLE_SERIALIZATION_COMPATIBILITY_V0` + +Globally define this macro to support loading of ``unordered_multimap``s saved to +a Boost.Serialization archive with a version of Boost prior to Boost 1.84. + === Typedefs [source,c++,subs=+quotes] @@ -1552,4 +1559,59 @@ for (auto i = c.begin(), last = c.end(); i != last; ) { return original_size - c.size(); ``` +=== Serialization + +``unordered_multimap``s can be archived/retrieved by means of +link:../../../serialization/index.html[Boost.Serialization^] using the API provided +by this library. Both regular and XML archives are supported. + +==== Saving an unordered_multimap to an archive + +Saves all the elements of an `unordered_multimap` `x` to an archive (XML archive) `ar`. + +[horizontal] +Requires:;; `std::remove_const::type` and `std::remove_const::type` +are serializable (XML serializable), and they do support Boost.Serialization +`save_construct_data`/`load_construct_data` protocol (automatically suported by +https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^] +types). + --- + +==== Loading an unordered_multimap from an archive + +Deletes all preexisting elements of an `unordered_multimap` `x` and inserts +from an archive (XML archive) `ar` restored copies of the elements of the +original `unordered_multimap` `other` saved to the storage read by `ar`. + +[horizontal] +Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/EmplaceConstructible[EmplaceConstructible^] +from `(std::remove_const::type&&, std::remove_const::type&&)`. +`x.key_equal()` is functionally equivalent to `other.key_equal()`. +Note:;; If the archive was saved using a release of Boost prior to Boost 1.84, +the configuration macro `BOOST_UNORDERED_ENABLE_SERIALIZATION_COMPATIBILITY_V0` +has to be globally defined for this operation to succeed; otherwise, an exception is thrown. + +--- + +==== Saving an iterator/const_iterator to an archive + +Saves the positional information of an `iterator` (`const_iterator`) `it` +to an archive (XML archive) `ar`. `it` can be and `end()` iterator. + +[horizontal] +Requires:;; The `unordered_multimap` `x` pointed to by `it` has been previously saved to `ar`, +and no modifying operations have been issued on `x` between saving of `x` and +saving of `it`. + +--- + +==== Loading an iterator/const_iterator from an archive + +Makes an `iterator` (`const_iterator`) `it` point to the restored position of +the original `iterator` (`const_iterator`) saved to the storage read by +an archive (XML archive) `ar`. + +[horizontal] +Requires:;; If `x` is the `unordered_multimap` `it` points to, no modifying operations +have been issued on `x` between loading of `x` and loading of `it`. diff --git a/doc/unordered/unordered_multiset.adoc b/doc/unordered/unordered_multiset.adoc index 017ef5c2..a1ee1a57 100644 --- a/doc/unordered/unordered_multiset.adoc +++ b/doc/unordered/unordered_multiset.adoc @@ -278,7 +278,12 @@ The elements are organized into buckets. Keys with the same hash code are stored The number of buckets can be automatically increased by a call to insert, or as the result of calling rehash. ---- +=== Configuration macros + +==== `BOOST_UNORDERED_ENABLE_SERIALIZATION_COMPATIBILITY_V0` + +Globally define this macro to support loading of ``unordered_multiset``s saved to +a Boost.Serialization archive with a version of Boost prior to Boost 1.84. === Typedefs @@ -1485,4 +1490,58 @@ for (auto i = c.begin(), last = c.end(); i != last; ) { return original_size - c.size(); ``` +=== Serialization + +``unordered_multiset``s can be archived/retrieved by means of +link:../../../serialization/index.html[Boost.Serialization^] using the API provided +by this library. Both regular and XML archives are supported. + +==== Saving an unordered_multiset to an archive + +Saves all the elements of an `unordered_multiset` `x` to an archive (XML archive) `ar`. + +[horizontal] +Requires:;; `value_type` +is serializable (XML serializable), and it supports Boost.Serialization +`save_construct_data`/`load_construct_data` protocol (automatically suported by +https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^] +types). + --- + +==== Loading an unordered_multiset from an archive + +Deletes all preexisting elements of an `unordered_multiset` `x` and inserts +from an archive (XML archive) `ar` restored copies of the elements of the +original `unordered_multiset` `other` saved to the storage read by `ar`. + +[horizontal] +Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/MoveInsertable[MoveInsertable^]. +`x.key_equal()` is functionally equivalent to `other.key_equal()`. +Note:;; If the archive was saved using a release of Boost prior to Boost 1.84, +the configuration macro `BOOST_UNORDERED_ENABLE_SERIALIZATION_COMPATIBILITY_V0` +has to be globally defined for this operation to succeed; otherwise, an exception is thrown. + +--- + +==== Saving an iterator/const_iterator to an archive + +Saves the positional information of an `iterator` (`const_iterator`) `it` +to an archive (XML archive) `ar`. `it` can be and `end()` iterator. + +[horizontal] +Requires:;; The `unordered_multiset` `x` pointed to by `it` has been previously saved to `ar`, +and no modifying operations have been issued on `x` between saving of `x` and +saving of `it`. + +--- + +==== Loading an iterator/const_iterator from an archive + +Makes an `iterator` (`const_iterator`) `it` point to the restored position of +the original `iterator` (`const_iterator`) saved to the storage read by +an archive (XML archive) `ar`. + +[horizontal] +Requires:;; If `x` is the `unordered_multiset` `it` points to, no modifying operations +have been issued on `x` between loading of `x` and loading of `it`. diff --git a/doc/unordered/unordered_node_map.adoc b/doc/unordered/unordered_node_map.adoc index 9930ebfc..fcc46d5c 100644 --- a/doc/unordered/unordered_node_map.adoc +++ b/doc/unordered/unordered_node_map.adoc @@ -1545,4 +1545,57 @@ for (auto i = c.begin(), last = c.end(); i != last; ) { return original_size - c.size(); ``` +=== Serialization + +``unordered_node_map``s can be archived/retrieved by means of +link:../../../serialization/index.html[Boost.Serialization^] using the API provided +by this library. Both regular and XML archives are supported. + +==== Saving an unordered_node_map to an archive + +Saves all the elements of an `unordered_node_map` `x` to an archive (XML archive) `ar`. + +[horizontal] +Requires:;; `std::remove_const::type` and `std::remove_const::type` +are serializable (XML serializable), and they do support Boost.Serialization +`save_construct_data`/`load_construct_data` protocol (automatically suported by +https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^] +types). + --- + +==== Loading an unordered_node_map from an archive + +Deletes all preexisting elements of an `unordered_node_map` `x` and inserts +from an archive (XML archive) `ar` restored copies of the elements of the +original `unordered_node_map` `other` saved to the storage read by `ar`. + +[horizontal] +Requires:;; `key_type` and `mapped_type` are constructible from +`std::remove_const::type&&` and `std::remove_const::type&&`, +respectively. +`x.key_equal()` is functionally equivalent to `other.key_equal()`. + +--- + +==== Saving an iterator/const_iterator to an archive + +Saves the positional information of an `iterator` (`const_iterator`) `it` +to an archive (XML archive) `ar`. `it` can be and `end()` iterator. + +[horizontal] +Requires:;; The `unordered_node_map` `x` pointed to by `it` has been previously saved to `ar`, +and no modifying operations have been issued on `x` between saving of `x` and +saving of `it`. + +--- + +==== Loading an iterator/const_iterator from an archive + +Makes an `iterator` (`const_iterator`) `it` point to the restored position of +the original `iterator` (`const_iterator`) saved to the storage read by +an archive (XML archive) `ar`. + +[horizontal] +Requires:;; If `x` is the `unordered_node_map` `it` points to, no modifying operations +have been issued on `x` between loading of `x` and loading of `it`. diff --git a/doc/unordered/unordered_node_set.adoc b/doc/unordered/unordered_node_set.adoc index 81633d96..44a7fc9e 100644 --- a/doc/unordered/unordered_node_set.adoc +++ b/doc/unordered/unordered_node_set.adoc @@ -1302,4 +1302,55 @@ for (auto i = c.begin(), last = c.end(); i != last; ) { return original_size - c.size(); ``` +=== Serialization + +``unordered_node_set``s can be archived/retrieved by means of +link:../../../serialization/index.html[Boost.Serialization^] using the API provided +by this library. Both regular and XML archives are supported. + +==== Saving an unordered_node_set to an archive + +Saves all the elements of an `unordered_node_set` `x` to an archive (XML archive) `ar`. + +[horizontal] +Requires:;; `value_type` +is serializable (XML serializable), and it supports Boost.Serialization +`save_construct_data`/`load_construct_data` protocol (automatically suported by +https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^] +types). + --- + +==== Loading an unordered_node_set from an archive + +Deletes all preexisting elements of an `unordered_node_set` `x` and inserts +from an archive (XML archive) `ar` restored copies of the elements of the +original `unordered_node_set` `other` saved to the storage read by `ar`. + +[horizontal] +Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/MoveInsertable[MoveInsertable^]. +`x.key_equal()` is functionally equivalent to `other.key_equal()`. + +--- + +==== Saving an iterator/const_iterator to an archive + +Saves the positional information of an `iterator` (`const_iterator`) `it` +to an archive (XML archive) `ar`. `it` can be and `end()` iterator. + +[horizontal] +Requires:;; The `unordered_node_set` `x` pointed to by `it` has been previously saved to `ar`, +and no modifying operations have been issued on `x` between saving of `x` and +saving of `it`. + +--- + +==== Loading an iterator/const_iterator from an archive + +Makes an `iterator` (`const_iterator`) `it` point to the restored position of +the original `iterator` (`const_iterator`) saved to the storage read by +an archive (XML archive) `ar`. + +[horizontal] +Requires:;; If `x` is the `unordered_node_set` `it` points to, no modifying operations +have been issued on `x` between loading of `x` and loading of `it`. diff --git a/doc/unordered/unordered_set.adoc b/doc/unordered/unordered_set.adoc index 57b6e6f4..4b50b21f 100644 --- a/doc/unordered/unordered_set.adoc +++ b/doc/unordered/unordered_set.adoc @@ -279,7 +279,12 @@ The elements are organized into buckets. Keys with the same hash code are stored The number of buckets can be automatically increased by a call to insert, or as the result of calling rehash. ---- +=== Configuration macros + +==== `BOOST_UNORDERED_ENABLE_SERIALIZATION_COMPATIBILITY_V0` + +Globally define this macro to support loading of ``unordered_set``s saved to +a Boost.Serialization archive with a version of Boost prior to Boost 1.84. === Typedefs @@ -1550,4 +1555,58 @@ for (auto i = c.begin(), last = c.end(); i != last; ) { return original_size - c.size(); ``` +=== Serialization + +``unordered_set``s can be archived/retrieved by means of +link:../../../serialization/index.html[Boost.Serialization^] using the API provided +by this library. Both regular and XML archives are supported. + +==== Saving an unordered_set to an archive + +Saves all the elements of an `unordered_set` `x` to an archive (XML archive) `ar`. + +[horizontal] +Requires:;; `value_type` +is serializable (XML serializable), and it supports Boost.Serialization +`save_construct_data`/`load_construct_data` protocol (automatically suported by +https://en.cppreference.com/w/cpp/named_req/DefaultConstructible[DefaultConstructible^] +types). + --- + +==== Loading an unordered_set from an archive + +Deletes all preexisting elements of an `unordered_set` `x` and inserts +from an archive (XML archive) `ar` restored copies of the elements of the +original `unordered_set` `other` saved to the storage read by `ar`. + +[horizontal] +Requires:;; `value_type` is https://en.cppreference.com/w/cpp/named_req/MoveInsertable[MoveInsertable^]. +`x.key_equal()` is functionally equivalent to `other.key_equal()`. +Note:;; If the archive was saved using a release of Boost prior to Boost 1.84, +the configuration macro `BOOST_UNORDERED_ENABLE_SERIALIZATION_COMPATIBILITY_V0` +has to be globally defined for this operation to succeed; otherwise, an exception is thrown. + +--- + +==== Saving an iterator/const_iterator to an archive + +Saves the positional information of an `iterator` (`const_iterator`) `it` +to an archive (XML archive) `ar`. `it` can be and `end()` iterator. + +[horizontal] +Requires:;; The `unordered_set` `x` pointed to by `it` has been previously saved to `ar`, +and no modifying operations have been issued on `x` between saving of `x` and +saving of `it`. + +--- + +==== Loading an iterator/const_iterator from an archive + +Makes an `iterator` (`const_iterator`) `it` point to the restored position of +the original `iterator` (`const_iterator`) saved to the storage read by +an archive (XML archive) `ar`. + +[horizontal] +Requires:;; If `x` is the `unordered_set` `it` points to, no modifying operations +have been issued on `x` between loading of `x` and loading of `it`. diff --git a/include/boost/unordered/concurrent_flat_map.hpp b/include/boost/unordered/concurrent_flat_map.hpp index 6e2eef98..e04f84b6 100644 --- a/include/boost/unordered/concurrent_flat_map.hpp +++ b/include/boost/unordered/concurrent_flat_map.hpp @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -101,6 +102,11 @@ namespace boost { friend typename concurrent_flat_map::size_type erase_if( concurrent_flat_map& set, Predicate pred); + template + friend void serialize( + Archive& ar, concurrent_flat_map& c, + unsigned int version); + public: using key_type = Key; using mapped_type = T; @@ -772,6 +778,13 @@ namespace boost { return c.table_.erase_if(pred); } + template + void serialize( + Archive& ar, concurrent_flat_map& c, unsigned int) + { + ar & core::make_nvp("table",c.table_); + } + #if BOOST_UNORDERED_TEMPLATE_DEDUCTION_GUIDES template +#include +#include +#include +#include +#include +#include + +namespace boost{ +namespace unordered{ +namespace detail{ + +/* constructs a stack-based object from a serialization archive */ + +template +struct archive_constructed:private noncopyable +{ + template + archive_constructed(const char* name,Archive& ar,unsigned int version) + { + core::load_construct_data_adl(ar,boost::addressof(get()),version); + BOOST_TRY{ + ar>>core::make_nvp(name,get()); + } + BOOST_CATCH(...){ + get().~T(); + BOOST_RETHROW; + } + BOOST_CATCH_END + } + + ~archive_constructed() + { + get().~T(); + } + +#if defined(BOOST_GCC)&&(BOOST_GCC>=4*10000+6*100) +#define BOOST_UNORDERED_IGNORE_WSTRICT_ALIASING +#endif + +#if defined(BOOST_UNORDERED_IGNORE_WSTRICT_ALIASING) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wstrict-aliasing" +#endif + + T& get(){return *reinterpret_cast(&space);} + +#if defined(BOOST_UNORDERED_IGNORE_WSTRICT_ALIASING) +#pragma GCC diagnostic pop +#undef BOOST_UNORDERED_IGNORE_WSTRICT_ALIASING +#endif + +private: + typename aligned_storage::value>::type space; +}; + +} /* namespace detail */ +} /* namespace unordered */ +} /* namespace boost */ + +#endif diff --git a/include/boost/unordered/detail/bad_archive_exception.hpp b/include/boost/unordered/detail/bad_archive_exception.hpp new file mode 100644 index 00000000..5c7f4462 --- /dev/null +++ b/include/boost/unordered/detail/bad_archive_exception.hpp @@ -0,0 +1,27 @@ +/* Copyright 2023 Joaquin M Lopez Munoz. + * 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) + * + * See https://www.boost.org/libs/unordered for library home page. + */ + +#ifndef BOOST_UNORDERED_DETAIL_BAD_ARCHIVE_EXCEPTION_HPP +#define BOOST_UNORDERED_DETAIL_BAD_ARCHIVE_EXCEPTION_HPP + +#include + +namespace boost{ +namespace unordered{ +namespace detail{ + +struct bad_archive_exception:std::runtime_error +{ + bad_archive_exception():std::runtime_error("Invalid or corrupted archive"){} +}; + +} /* namespace detail */ +} /* namespace unordered */ +} /* namespace boost */ + +#endif diff --git a/include/boost/unordered/detail/fca.hpp b/include/boost/unordered/detail/fca.hpp index e88faab1..2a4167dc 100644 --- a/include/boost/unordered/detail/fca.hpp +++ b/include/boost/unordered/detail/fca.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2022 Joaquin M Lopez Munoz. +// Copyright (C) 2022-2023 Joaquin M Lopez Munoz. // Copyright (C) 2022 Christian Mazakas // // Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -114,16 +114,18 @@ to normal separate chaining implementations. */ #include +#include #include #include #include #include +#include #include +#include #include #include #include -#include #include #include @@ -287,6 +289,25 @@ namespace boost { p = pbg->buckets + x; } } + + template + friend void serialization_track( + Archive& ar, grouped_bucket_iterator const& x) + { + // requires: not at end() position + track_address(ar, x.p); + track_address(ar, x.pbg); + } + + friend class boost::serialization::access; + + template + void serialize(Archive& ar,unsigned int) + { + // requires: not at end() position + serialize_tracked_address(ar, p); + serialize_tracked_address(ar, pbg); + } }; template struct const_grouped_local_bucket_iterator; @@ -630,7 +651,7 @@ namespace boost { bool b = boost::allocator_propagate_on_container_swap< allocator_type>::type::value; if (b) { - boost::swap(get_node_allocator(), other.get_node_allocator()); + boost::core::invoke_swap(get_node_allocator(), other.get_node_allocator()); } } diff --git a/include/boost/unordered/detail/foa/concurrent_table.hpp b/include/boost/unordered/detail/foa/concurrent_table.hpp index a3c35628..b8335de9 100644 --- a/include/boost/unordered/detail/foa/concurrent_table.hpp +++ b/include/boost/unordered/detail/foa/concurrent_table.hpp @@ -16,13 +16,18 @@ #include #include #include +#include #include #include #include +#include +#include +#include #include #include #include #include +#include #include #include #include @@ -1442,6 +1447,139 @@ private: } #endif + friend class boost::serialization::access; + + template + void serialize(Archive& ar,unsigned int version) + { + core::split_member(ar,*this,version); + } + + template + void save(Archive& ar,unsigned int version)const + { + save( + ar,version, + std::integral_constant::value>{}); + } + + template + void save(Archive& ar,unsigned int,std::true_type /* set */)const + { + auto lck=exclusive_access(); + const std::size_t s=super::size(); + const serialization_version value_version; + + ar< + void save(Archive& ar,unsigned int,std::false_type /* map */)const + { + using raw_key_type=typename std::remove_const::type; + using raw_mapped_type=typename std::remove_const< + typename TypePolicy::mapped_type>::type; + + auto lck=exclusive_access(); + const std::size_t s=super::size(); + const serialization_version key_version; + const serialization_version mapped_version; + + ar< + void load(Archive& ar,unsigned int version) + { + load( + ar,version, + std::integral_constant::value>{}); + } + + template + void load(Archive& ar,unsigned int,std::true_type /* set */) + { + auto lck=exclusive_access(); + std::size_t s; + serialization_version value_version; + + ar>>core::make_nvp("count",s); + ar>>core::make_nvp("value_version",value_version); + + super::clear(); + super::reserve(s); + + for(std::size_t n=0;n value("item",ar,value_version); + auto& x=value.get(); + auto hash=this->hash_for(x); + auto pos0=this->position_for(hash); + + if(this->find(x,pos0,hash))throw_exception(bad_archive_exception()); + auto loc=this->unchecked_emplace_at(pos0,hash,std::move(x)); + ar.reset_object_address(std::addressof(*loc.p),std::addressof(x)); + } + } + + template + void load(Archive& ar,unsigned int,std::false_type /* map */) + { + using raw_key_type=typename std::remove_const::type; + using raw_mapped_type=typename std::remove_const< + typename TypePolicy::mapped_type>::type; + + auto lck=exclusive_access(); + std::size_t s; + serialization_version key_version; + serialization_version mapped_version; + + ar>>core::make_nvp("count",s); + ar>>core::make_nvp("key_version",key_version); + ar>>core::make_nvp("mapped_version",mapped_version); + + super::clear(); + super::reserve(s); + + for(std::size_t n=0;n key("key",ar,key_version); + archive_constructed mapped("mapped",ar,mapped_version); + auto& k=key.get(); + auto& m=mapped.get(); + auto hash=this->hash_for(k); + auto pos0=this->position_for(hash); + + if(this->find(k,pos0,hash))throw_exception(bad_archive_exception()); + auto loc=this->unchecked_emplace_at(pos0,hash,std::move(k),std::move(m)); + ar.reset_object_address(std::addressof(loc.p->first),std::addressof(k)); + ar.reset_object_address(std::addressof(loc.p->second),std::addressof(m)); + } + } + static std::atomic thread_counter; mutable multimutex_type mutexes; }; diff --git a/include/boost/unordered/detail/foa/core.hpp b/include/boost/unordered/detail/foa/core.hpp index 7477003d..2f3800db 100644 --- a/include/boost/unordered/detail/foa/core.hpp +++ b/include/boost/unordered/detail/foa/core.hpp @@ -1180,7 +1180,8 @@ alloc_make_insert_type(const Allocator& al,Args&&... args) * init_type and element_type: * * - TypePolicy::key_type and TypePolicy::value_type have the obvious - * meaning. + * meaning. TypePolicy::mapped_type is expected to be provided as well + * when key_type and value_type are not the same. * * - TypePolicy::init_type is the type implicitly converted to when * writing x.insert({...}). For maps, this is std::pair rather diff --git a/include/boost/unordered/detail/foa/flat_map_types.hpp b/include/boost/unordered/detail/foa/flat_map_types.hpp index 8a4d25f2..712df5fb 100644 --- a/include/boost/unordered/detail/foa/flat_map_types.hpp +++ b/include/boost/unordered/detail/foa/flat_map_types.hpp @@ -14,6 +14,7 @@ namespace boost { template struct flat_map_types { using key_type = Key; + using mapped_type = T; using raw_key_type = typename std::remove_const::type; using raw_mapped_type = typename std::remove_const::type; diff --git a/include/boost/unordered/detail/foa/table.hpp b/include/boost/unordered/detail/foa/table.hpp index 6cc11ed8..fb883011 100644 --- a/include/boost/unordered/detail/foa/table.hpp +++ b/include/boost/unordered/detail/foa/table.hpp @@ -15,7 +15,9 @@ #include #include #include +#include #include +#include #include #include #include @@ -195,6 +197,25 @@ private: } } + template + friend void serialization_track(Archive& ar,const table_iterator& x) + { + if(x.p){ + track_address(ar,x.pc); + track_address(ar,x.p); + } + } + + friend class boost::serialization::access; + + template + void serialize(Archive& ar,unsigned int) + { + if(!p)pc=nullptr; + serialize_tracked_address(ar,pc); + serialize_tracked_address(ar,p); + } + unsigned char *pc=nullptr; table_element_type *p=nullptr; }; diff --git a/include/boost/unordered/detail/implementation.hpp b/include/boost/unordered/detail/implementation.hpp index 1fffdc4a..f353365c 100644 --- a/include/boost/unordered/detail/implementation.hpp +++ b/include/boost/unordered/detail/implementation.hpp @@ -1,6 +1,6 @@ // Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard. // Copyright (C) 2005-2016 Daniel James -// Copyright (C) 2022 Joaquin M Lopez Munoz. +// Copyright (C) 2022-2023 Joaquin M Lopez Munoz. // Copyright (C) 2022 Christian Mazakas // // Distributed under the Boost Software License, Version 1.0. (See accompanying @@ -17,8 +17,10 @@ #include #include #include +#include #include #include +#include #include #include #include @@ -29,7 +31,6 @@ #include #include #include -#include #include #include #include @@ -47,6 +48,7 @@ #include #include #include +#include #include #include #include @@ -258,8 +260,8 @@ namespace boost { void swap(compressed& x) { - boost::swap(first(), x.first()); - boost::swap(second(), x.second()); + boost::core::invoke_swap(first(), x.first()); + boost::core::invoke_swap(second(), x.second()); } private: @@ -642,7 +644,7 @@ namespace boost { move(x); } } else if (has_value_) { - boost::swap(value_.value(), x.value_.value()); + boost::core::invoke_swap(value_.value(), x.value_.value()); } } @@ -1703,6 +1705,25 @@ namespace boost { p = (++itb)->next; } } + + template + friend void serialization_track(Archive& ar, const iterator& x) + { + if(x.p){ + track_address(ar, x.p); + serialization_track(ar, x.itb); + } + } + + friend class boost::serialization::access; + + template + void serialize(Archive& ar,unsigned int) + { + if(!p) itb = bucket_iterator(); + serialize_tracked_address(ar, p); + ar & core::make_nvp("bucket_iterator", itb); + } }; template class c_iterator @@ -1793,6 +1814,25 @@ namespace boost { p = (++itb)->next; } } + + template + friend void serialization_track(Archive& ar, const c_iterator& x) + { + if(x.p){ + track_address(ar, x.p); + serialization_track(ar, x.itb); + } + } + + friend class boost::serialization::access; + + template + void serialize(Archive& ar,unsigned int) + { + if(!p) itb = bucket_iterator(); + serialize_tracked_address(ar, p); + ar & core::make_nvp("bucket_iterator", itb); + } }; } // namespace iterator_detail @@ -2049,7 +2089,7 @@ namespace boost { x.switch_functions(); buckets_.swap(x.buckets_); - boost::swap(size_, x.size_); + boost::core::invoke_swap(size_, x.size_); std::swap(mlf_, x.mlf_); std::swap(max_load_, x.max_load_); } @@ -2058,7 +2098,7 @@ namespace boost { void swap(table& x, true_type) { buckets_.swap(x.buckets_); - boost::swap(size_, x.size_); + boost::core::invoke_swap(size_, x.size_); std::swap(mlf_, x.mlf_); std::swap(max_load_, x.max_load_); this->current_functions().swap(x.current_functions()); diff --git a/include/boost/unordered/detail/serialization_version.hpp b/include/boost/unordered/detail/serialization_version.hpp new file mode 100644 index 00000000..c63eb034 --- /dev/null +++ b/include/boost/unordered/detail/serialization_version.hpp @@ -0,0 +1,74 @@ +/* Copyright 2023 Joaquin M Lopez Munoz. + * 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) + * + * See https://www.boost.org/libs/unordered for library home page. + */ + +#ifndef BOOST_UNORDERED_DETAIL_SERIALIZATION_VERSION_HPP +#define BOOST_UNORDERED_DETAIL_SERIALIZATION_VERSION_HPP + +#include +#include + +namespace boost{ +namespace unordered{ +namespace detail{ + +/* boost::serialization::load_construct_adl(ar,t,version) requires user code + * to pass the serialization version for t, when this information is really + * stored in the archive. serialization_version circumvents this design + * error by acting as a regular serializable type with the same serialization + * version as T; loading/saving serialization_version does nothing with + * the archive data itself but captures the stored serialization version + * at load() time. + */ + +template +struct serialization_version +{ + serialization_version(): + value(boost::serialization::version::value){} + + serialization_version& operator=(unsigned int x){value=x;return *this;}; + + operator unsigned int()const{return value;} + +private: + friend class boost::serialization::access; + + template + void serialize(Archive& ar,unsigned int version) + { + core::split_member(ar,*this,version); + } + + template + void save(Archive&,unsigned int)const{} + + template + void load(Archive&,unsigned int version) + { + this->value=version; + } + + unsigned int value; +}; + +} /* namespace detail */ +} /* namespace unordered */ + +namespace serialization{ + +template +struct version > +{ + BOOST_STATIC_CONSTANT(int,value=version::value); +}; + +} /* namespace serialization */ + +} /* namespace boost */ + +#endif diff --git a/include/boost/unordered/detail/serialize_container.hpp b/include/boost/unordered/detail/serialize_container.hpp new file mode 100644 index 00000000..9b8c896d --- /dev/null +++ b/include/boost/unordered/detail/serialize_container.hpp @@ -0,0 +1,208 @@ +/* Copyright 2023 Joaquin M Lopez Munoz. + * 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) + * + * See https://www.boost.org/libs/unordered for library home page. + */ + +#ifndef BOOST_UNORDERED_DETAIL_SERIALIZE_CONTAINER_HPP +#define BOOST_UNORDERED_DETAIL_SERIALIZE_CONTAINER_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost{ +namespace unordered{ +namespace detail{ + +/* serialize_container(ar,x,v) serializes any of the unordered associative + * containers in Boost.Unordered. Iterator serialization is also supported + * through the following protocol: + * - At saving time, for each iterator it in [x.begin(),x.end()), + * serialization_track(ar,it) is ADL-called to instruct the archive to + * track the positions internally pointed to by the iterator via + * track_address(). + * - At loading time, these addresses are mapped to those of the equivalent + * reconstructed positions using again serialization_track(ar,it). + * - Serializing an iterator reduces to serializing pointers to previously + * tracked addresses via serialize_address(). + */ + +template +std::pair adapt_insert_return_type(Iterator it) +{ + return std::pair(it,true); +} + +template +std::pair adapt_insert_return_type(std::pair p) +{ + return p; +} + +template struct load_or_save_unordered_set; + +template struct load_or_save_unordered_set /* save */ +{ + template + void operator()(Archive& ar,const Set& x,unsigned int)const + { + typedef typename Set::value_type value_type; + typedef typename Set::const_iterator const_iterator; + + const std::size_t s=x.size(); + const serialization_version value_version; + + ar< struct load_or_save_unordered_set /* load */ +{ + template + void operator()(Archive& ar,Set& x,unsigned int)const + { + typedef typename Set::value_type value_type; + typedef typename Set::iterator iterator; + + std::size_t s; + serialization_version value_version; + + ar>>core::make_nvp("count",s); + ar>>core::make_nvp("value_version",value_version); + + x.clear(); + x.reserve(s); /* critical so that iterator tracking is stable */ + + for(std::size_t n=0;n value("item",ar,value_version); + + std::pair p=adapt_insert_return_type( + x.insert(boost::move(value.get()))); + if(!p.second)throw_exception(bad_archive_exception()); + ar.reset_object_address( + boost::addressof(*p.first),boost::addressof(value.get())); + serialization_track(ar,p.first); + } + } +}; + +template struct load_or_save_unordered_map; + +template struct load_or_save_unordered_map /* save */ +{ + template + void operator()(Archive& ar,const Map& x,unsigned int)const + { + typedef typename boost::remove_const< + typename Map::key_type>::type key_type; + typedef typename boost::remove_const< + typename Map::mapped_type>::type mapped_type; + typedef typename Map::const_iterator const_iterator; + + const std::size_t s=x.size(); + const serialization_version key_version; + const serialization_version mapped_version; + + ar<first),key_version); + ar<first); + core::save_construct_data_adl( + ar,boost::addressof(first->second),mapped_version); + ar<second); + serialization_track(ar,first); + } + } +}; + +template struct load_or_save_unordered_map /* load */ +{ + template + void operator()(Archive& ar,Map& x,unsigned int)const + { + typedef typename boost::remove_const< + typename Map::key_type>::type key_type; + typedef typename boost::remove_const< + typename Map::mapped_type>::type mapped_type; + typedef typename Map::iterator iterator; + + std::size_t s; + serialization_version key_version; + serialization_version mapped_version; + + ar>>core::make_nvp("count",s); + ar>>core::make_nvp("key_version",key_version); + ar>>core::make_nvp("mapped_version",mapped_version); + + x.clear(); + x.reserve(s); /* critical so that iterator tracking is stable */ + + for(std::size_t n=0;n key("key",ar,key_version); + archive_constructed mapped("mapped",ar,mapped_version); + + std::pair p=adapt_insert_return_type( + x.emplace(boost::move(key.get()),boost::move(mapped.get()))); + if(!p.second)throw_exception(bad_archive_exception()); + ar.reset_object_address( + boost::addressof(p.first->first),boost::addressof(key.get())); + ar.reset_object_address( + boost::addressof(p.first->second),boost::addressof(mapped.get())); + serialization_track(ar,p.first); + } + } +}; + +template +struct load_or_save_container; + +template +struct load_or_save_container: + load_or_save_unordered_set{}; + +template +struct load_or_save_container: + load_or_save_unordered_map{}; + +template +void serialize_container(Archive& ar,Container& x,unsigned int version) +{ + load_or_save_container< + Container, + boost::is_same< + typename Container::key_type,typename Container::value_type>::value, + Archive::is_saving::value>()(ar,x,version); +} + +} /* namespace detail */ +} /* namespace unordered */ +} /* namespace boost */ + +#endif diff --git a/include/boost/unordered/detail/serialize_fca_container.hpp b/include/boost/unordered/detail/serialize_fca_container.hpp new file mode 100644 index 00000000..7555a82e --- /dev/null +++ b/include/boost/unordered/detail/serialize_fca_container.hpp @@ -0,0 +1,156 @@ +/* Copyright 2023 Joaquin M Lopez Munoz. + * 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) + * + * See https://www.boost.org/libs/unordered for library home page. + */ + +#ifndef BOOST_UNORDERED_DETAIL_SERIALIZE_FCA_CONTAINER_HPP +#define BOOST_UNORDERED_DETAIL_SERIALIZE_FCA_CONTAINER_HPP + +#include + +#if defined(BOOST_UNORDERED_ENABLE_SERIALIZATION_COMPATIBILITY_V0) + +#define BOOST_UNORDERED_BLOCK_BOOSTDEP_HEADER \ + +#include BOOST_UNORDERED_BLOCK_BOOSTDEP_HEADER +#undef BOOST_UNORDERED_BLOCK_BOOSTDEP_HEADER +#define BOOST_UNORDERED_BLOCK_BOOSTDEP_HEADER \ + +#include BOOST_UNORDERED_BLOCK_BOOSTDEP_HEADER +#undef BOOST_UNORDERED_BLOCK_BOOSTDEP_HEADER +#define BOOST_UNORDERED_BLOCK_BOOSTDEP_HEADER \ + +#include BOOST_UNORDERED_BLOCK_BOOSTDEP_HEADER +#undef BOOST_UNORDERED_BLOCK_BOOSTDEP_HEADER +#define BOOST_UNORDERED_BLOCK_BOOSTDEP_HEADER \ + +#include BOOST_UNORDERED_BLOCK_BOOSTDEP_HEADER +#undef BOOST_UNORDERED_BLOCK_BOOSTDEP_HEADER + +#include +#include + +#else + +#include +#include + +#endif + +namespace boost{ +namespace unordered{ +namespace detail{ + +/* Support for boost::unordered_[multi](map|set) loading from legacy archives. + * Until Boost 1.84, serialization of these containers was provided from + * Boost.Serialization via boost/serialization/boost_unordered_(map|set).hpp, + * from that release on support is native in Boost.Unordered. To enable legacy + * archive loading, BOOST_UNORDERED_ENABLE_SERIALIZATION_COMPATIBILITY_V0 + * must be defined (it implies header dependency from Boost.Serialization). + */ + +#if defined(BOOST_UNORDERED_ENABLE_SERIALIZATION_COMPATIBILITY_V0) + +template +struct archive_input; + +template< + typename Archive,typename K,typename T,typename H,typename P,typename A +> +struct archive_input >: + boost::serialization::stl::archive_input_unordered_map< + Archive, + boost::unordered_map + > +{}; + +template< + typename Archive,typename K,typename T,typename H,typename P,typename A +> +struct archive_input >: + boost::serialization::stl::archive_input_unordered_multimap< + Archive, + boost::unordered_multimap + > +{}; + +template< + typename Archive,typename K,typename H,typename P,typename A +> +struct archive_input >: + boost::serialization::stl::archive_input_unordered_set< + Archive, + boost::unordered_set + > +{}; + +template< + typename Archive,typename K,typename H,typename P,typename A +> +struct archive_input >: + boost::serialization::stl::archive_input_unordered_multiset< + Archive, + boost::unordered_multiset + > +{}; + +#else + +struct legacy_archive_exception:std::runtime_error +{ + legacy_archive_exception():std::runtime_error( + "Legacy archive detected, define " + "BOOST_UNORDERED_ENABLE_SERIALIZATION_COMPATIBILITY_V0 to load"){} +}; + +#endif + +template +struct load_or_save_fca_container; + +template +struct load_or_save_fca_container /* save */ +{ + template + void operator()(Archive& ar,Container& x,unsigned int version)const + { + serialize_container(ar,x,version); + } +}; + +template +struct load_or_save_fca_container /* load */ +{ + template + void operator()(Archive& ar,Container& x,unsigned int version)const + { + if(version==0){ +#if defined(BOOST_UNORDERED_ENABLE_SERIALIZATION_COMPATIBILITY_V0) + boost::serialization::stl::load_unordered_collection< + Archive,Container,archive_input + >(ar,x); +#else + throw_exception(legacy_archive_exception()); +#endif + } + else{ + serialize_container(ar,x,version); + } + } +}; + +template +void serialize_fca_container(Archive& ar,Container& x,unsigned int version) +{ + load_or_save_fca_container()( + ar,x,version); +} + +} /* namespace detail */ +} /* namespace unordered */ +} /* namespace boost */ + +#endif diff --git a/include/boost/unordered/detail/serialize_tracked_address.hpp b/include/boost/unordered/detail/serialize_tracked_address.hpp new file mode 100644 index 00000000..6d7d08ab --- /dev/null +++ b/include/boost/unordered/detail/serialize_tracked_address.hpp @@ -0,0 +1,103 @@ +/* Copyright 2023 Joaquin M Lopez Munoz. + * 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) + * + * See https://www.boost.org/libs/unordered for library home page. + */ + +#ifndef BOOST_UNORDERED_DETAIL_SERIALIZE_TRACKED_ADDRESS_HPP +#define BOOST_UNORDERED_DETAIL_SERIALIZE_TRACKED_ADDRESS_HPP + +#include +#include +#include +#include +#include +#include + +namespace boost{ +namespace unordered{ +namespace detail{ + +/* Tracked address serialization to support iterator serialization as described + * in serialize_container.hpp. The underlying technique is to reinterpret_cast + * T pointers to serialization_tracker pointers, which, when dereferenced + * and serialized, do not emit any serialization payload to the + * archive, but activate object tracking on the relevant addresses for later + * use with serialize_tracked_address(). + */ + +template +struct serialization_tracker +{ + /* An attempt to construct a serialization_tracker means a stray address + * in the archive, that is, one without a previously tracked address. + */ + serialization_tracker(){throw_exception(bad_archive_exception());} + + template + void serialize(Archive&,unsigned int){} /* no data emitted */ +}; + +template +void track_address(Archive& ar,Ptr p) +{ + typedef typename boost::pointer_traits ptr_traits; + typedef typename boost::remove_const< + typename ptr_traits::element_type>::type element_type; + + if(p){ + ar&core::make_nvp( + "address", + *reinterpret_cast*>( + const_cast( + boost::to_address(p)))); + } +} + +template +void serialize_tracked_address(Archive& ar,Ptr& p,boost::true_type /* save */) +{ + typedef typename boost::pointer_traits ptr_traits; + typedef typename boost::remove_const< + typename ptr_traits::element_type>::type element_type; + typedef serialization_tracker tracker; + + tracker* pt= + const_cast( + reinterpret_cast( + const_cast( + boost::to_address(p)))); + ar< +void serialize_tracked_address(Archive& ar,Ptr& p,boost::false_type /* load */) +{ + typedef typename boost::pointer_traits ptr_traits; + typedef typename boost::remove_const< + typename ptr_traits::element_type>::type element_type; + typedef serialization_tracker tracker; + + tracker* pt; + ar>>core::make_nvp("pointer",pt); + element_type* pn=const_cast( + reinterpret_cast( + const_cast(pt))); + p=pn?ptr_traits::pointer_to(*pn):0; +} + +template +void serialize_tracked_address(Archive& ar,Ptr& p) +{ + serialize_tracked_address( + ar,p, + boost::integral_constant()); +} + +} /* namespace detail */ +} /* namespace unordered */ +} /* namespace boost */ + +#endif diff --git a/include/boost/unordered/unordered_flat_map.hpp b/include/boost/unordered/unordered_flat_map.hpp index 1f7984ec..1e829c1d 100644 --- a/include/boost/unordered/unordered_flat_map.hpp +++ b/include/boost/unordered/unordered_flat_map.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2022 Christian Mazakas +// Copyright (C) 2022-2023 Christian Mazakas // 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) @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -696,6 +697,16 @@ namespace boost { return erase_if(map.table_, pred); } + template + void serialize( + Archive & ar, + unordered_flat_map& map, + unsigned int version) + { + detail::serialize_container(ar, map, version); + } + #if defined(BOOST_MSVC) #pragma warning(pop) /* C4714 */ #endif diff --git a/include/boost/unordered/unordered_flat_set.hpp b/include/boost/unordered/unordered_flat_set.hpp index a3c7748e..01cadf21 100644 --- a/include/boost/unordered/unordered_flat_set.hpp +++ b/include/boost/unordered/unordered_flat_set.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2022 Christian Mazakas +// Copyright (C) 2022-2023 Christian Mazakas // 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) @@ -12,6 +12,7 @@ #include #include +#include #include #include @@ -505,6 +506,16 @@ namespace boost { return erase_if(set.table_, pred); } + template + void serialize( + Archive & ar, + unordered_flat_set& set, + unsigned int version) + { + detail::serialize_container(ar, set, version); + } + #if defined(BOOST_MSVC) #pragma warning(pop) /* C4714 */ #endif diff --git a/include/boost/unordered/unordered_map.hpp b/include/boost/unordered/unordered_map.hpp index 35eb2f2e..2a707c49 100644 --- a/include/boost/unordered/unordered_map.hpp +++ b/include/boost/unordered/unordered_map.hpp @@ -1,7 +1,6 @@ - // Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard. // Copyright (C) 2005-2011 Daniel James. -// Copyright (C) 2022 Christian Mazakas +// Copyright (C) 2022-2023 Christian Mazakas // 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) @@ -16,11 +15,13 @@ #endif #include +#include #include #include #include #include #include +#include #include #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) @@ -1059,6 +1060,13 @@ namespace boost { #endif }; // class template unordered_map + template + void serialize( + Archive & ar,unordered_map& m,unsigned int version) + { + detail::serialize_fca_container(ar, m, version); + } + #if BOOST_UNORDERED_TEMPLATE_DEDUCTION_GUIDES template + void serialize( + Archive & ar,unordered_multimap& m,unsigned int version) + { + detail::serialize_fca_container(ar, m, version); + } + #if BOOST_UNORDERED_TEMPLATE_DEDUCTION_GUIDES template ::type::value || !alloc_.has_value() || !n.alloc_.has_value()) { - boost::swap(alloc_, n.alloc_); + boost::core::invoke_swap(alloc_, n.alloc_); } - boost::swap(ptr_, n.ptr_); + boost::core::invoke_swap(ptr_, n.ptr_); } }; @@ -3014,11 +3029,26 @@ namespace boost { void swap(insert_return_type_map& x, insert_return_type_map& y) { - boost::swap(x.node, y.node); - boost::swap(x.inserted, y.inserted); - boost::swap(x.position, y.position); + boost::core::invoke_swap(x.node, y.node); + boost::core::invoke_swap(x.inserted, y.inserted); + boost::core::invoke_swap(x.position, y.position); } } // namespace unordered + + namespace serialization { + template + struct version > + { + BOOST_STATIC_CONSTANT(int, value = 1); + }; + + template + struct version > + { + BOOST_STATIC_CONSTANT(int, value = 1); + }; + } // namespace serialization + } // namespace boost #if defined(BOOST_MSVC) diff --git a/include/boost/unordered/unordered_node_map.hpp b/include/boost/unordered/unordered_node_map.hpp index 32bd5989..3329b1b6 100644 --- a/include/boost/unordered/unordered_node_map.hpp +++ b/include/boost/unordered/unordered_node_map.hpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -788,6 +789,16 @@ namespace boost { return erase_if(map.table_, pred); } + template + void serialize( + Archive & ar, + unordered_node_map& map, + unsigned int version) + { + detail::serialize_container(ar, map, version); + } + #if defined(BOOST_MSVC) #pragma warning(pop) /* C4714 */ #endif diff --git a/include/boost/unordered/unordered_node_set.hpp b/include/boost/unordered/unordered_node_set.hpp index 06833a8b..21d3d28f 100644 --- a/include/boost/unordered/unordered_node_set.hpp +++ b/include/boost/unordered/unordered_node_set.hpp @@ -1,4 +1,4 @@ -// Copyright (C) 2022 Christian Mazakas +// Copyright (C) 2022-2023 Christian Mazakas // 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) @@ -14,6 +14,7 @@ #include #include #include +#include #include #include @@ -601,6 +602,16 @@ namespace boost { return erase_if(set.table_, pred); } + template + void serialize( + Archive & ar, + unordered_node_set& set, + unsigned int version) + { + detail::serialize_container(ar, set, version); + } + #if defined(BOOST_MSVC) #pragma warning(pop) /* C4714 */ #endif diff --git a/include/boost/unordered/unordered_set.hpp b/include/boost/unordered/unordered_set.hpp index 23837b2d..49bcf1ea 100644 --- a/include/boost/unordered/unordered_set.hpp +++ b/include/boost/unordered/unordered_set.hpp @@ -1,7 +1,6 @@ - // Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard. // Copyright (C) 2005-2011 Daniel James. -// Copyright (C) 2022 Christian Mazakas +// Copyright (C) 2022-2023 Christian Mazakas // 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) @@ -20,6 +19,7 @@ #include #include #include +#include #include #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) @@ -641,6 +641,13 @@ namespace boost { #endif }; // class template unordered_set + template + void serialize( + Archive & ar,unordered_set& c,unsigned int version) + { + detail::serialize_fca_container(ar, c, version); + } + #if BOOST_UNORDERED_TEMPLATE_DEDUCTION_GUIDES template + void serialize( + Archive & ar,unordered_multiset& c,unsigned int version) + { + detail::serialize_fca_container(ar, c, version); + } + #if BOOST_UNORDERED_TEMPLATE_DEDUCTION_GUIDES template & x, insert_return_type_set& y) { - boost::swap(x.node, y.node); - boost::swap(x.inserted, y.inserted); - boost::swap(x.position, y.position); + boost::core::invoke_swap(x.node, y.node); + boost::core::invoke_swap(x.inserted, y.inserted); + boost::core::invoke_swap(x.position, y.position); } } // namespace unordered + + namespace serialization { + template + struct version > + { + BOOST_STATIC_CONSTANT(int, value = 1); + }; + + template + struct version > + { + BOOST_STATIC_CONSTANT(int, value = 1); + }; + } // namespace serialization + } // namespace boost #if defined(BOOST_MSVC) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index dda83b68..d87fcf6d 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -85,6 +85,21 @@ run unordered/copy_tests.cpp : : : BOOST_UNORDERED_USE_MOVE : bmove_copy run unordered/move_tests.cpp : : : BOOST_UNORDERED_USE_MOVE : bmove_move ; run unordered/assign_tests.cpp : : : BOOST_UNORDERED_USE_MOVE : bmove_assign ; +path-constant BOOST_UNORDERED_TEST_DIR : . ; + +run unordered/serialization_tests.cpp + : $(BOOST_UNORDERED_TEST_DIR) + : + : BOOST_UNORDERED_ENABLE_SERIALIZATION_COMPATIBILITY_V0 + off # Boost.Serialization headers are not warning-free + norecover:no # boost::archive::xml_oarchive does not pass UBSAN + msvc:_CRT_SECURE_NO_WARNINGS + msvc:/bigobj + gcc:on + gcc:space + clang:on + clang:space + /boost//serialization/off ; run exception/constructor_exception_tests.cpp ; run exception/copy_exception_tests.cpp ; @@ -149,6 +164,21 @@ for local test in $(FOA_TESTS) run unordered/link_test_1.cpp unordered/link_test_2.cpp : : : $(CPP11) BOOST_UNORDERED_FOA_TESTS : foa_link_test ; run unordered/scoped_allocator.cpp : : : $(CPP11) msvc-14.0:no BOOST_UNORDERED_FOA_TESTS : foa_scoped_allocator ; run unordered/hash_is_avalanching_test.cpp ; + +run unordered/serialization_tests.cpp + : + : + : $(CPP11) BOOST_UNORDERED_FOA_TESTS + off # Boost.Serialization headers are not warning-free + norecover:no # boost::archive::xml_oarchive does not pass UBSAN + msvc:/bigobj + gcc:on + gcc:space + clang:on + clang:space + /boost//serialization/off + : foa_serialization_tests ; + run exception/constructor_exception_tests.cpp : : : $(CPP11) BOOST_UNORDERED_FOA_TESTS : foa_constructor_exception_tests ; run exception/copy_exception_tests.cpp : : : $(CPP11) BOOST_UNORDERED_FOA_TESTS : foa_copy_exception_tests ; run exception/assign_exception_tests.cpp : : : $(CPP11) BOOST_UNORDERED_FOA_TESTS : foa_assign_exception_tests ; @@ -164,6 +194,7 @@ alias foa_tests : foa_link_test foa_scoped_allocator hash_is_avalanching_test + foa_serialization_tests foa_constructor_exception_tests foa_copy_exception_tests foa_assign_exception_tests @@ -213,4 +244,20 @@ for local test in $(CFOA_TESTS) ; } -alias cfoa_tests : cfoa_$(CFOA_TESTS) ; +run cfoa/serialization_tests.cpp + : + : + : $(CPP11) multi + off # Boost.Serialization headers are not warning-free + norecover:no # boost::archive::xml_oarchive does not pass UBSAN + msvc:/bigobj + gcc:on + gcc:space + clang:on + clang:space + /boost//serialization/off + : cfoa_serialization_tests ; + +alias cfoa_tests : + cfoa_$(CFOA_TESTS) + cfoa_serialization_tests ; diff --git a/test/cfoa/serialization_tests.cpp b/test/cfoa/serialization_tests.cpp new file mode 100644 index 00000000..ad762451 --- /dev/null +++ b/test/cfoa/serialization_tests.cpp @@ -0,0 +1,79 @@ +// Copyright (C) 2023 Joaquin M Lopez Munoz +// 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) + +#include "../objects/test.hpp" +#include "../helpers/random_values.hpp" + +#include +#include +#include +#include +#include +#include + +namespace { + + template + void serialization_tests( + Container*, ArchivePair*, test::random_generator generator) + { + using output_archive = typename ArchivePair::first_type ; + using input_archive = typename ArchivePair::second_type; + + BOOST_LIGHTWEIGHT_TEST_OSTREAM << "serialization_tests1\n"; + { + Container c; + + std::ostringstream oss; + { + output_archive oa(oss); + oa << boost::serialization::make_nvp("container", c); + } + + test::random_values values(100, generator); + Container c2(values.begin(), values.end()); + std::istringstream iss(oss.str()); + input_archive ia(iss); + ia >> boost::serialization::make_nvp("container", c2); + BOOST_TEST(c2.empty()); + } + + BOOST_LIGHTWEIGHT_TEST_OSTREAM << "serialization_tests2\n"; + { + test::random_values values(100, generator); + Container c(values.begin(), values.end()); + + std::ostringstream oss; + { + output_archive oa(oss); + oa << boost::serialization::make_nvp("container", c); + } + + Container c2; + std::istringstream iss(oss.str()); + input_archive ia(iss); + ia >> boost::serialization::make_nvp("container", c2); + BOOST_TEST(c == c2); + } + } + + using test::default_generator; + + std::pair< + boost::archive::text_oarchive, boost::archive::text_iarchive>* + text_archive; + std::pair< + boost::archive::xml_oarchive, boost::archive::xml_iarchive>* + xml_archive; + + boost::concurrent_flat_map< + test::object, test::object, test::hash, test::equal_to>* test_flat_map; + + UNORDERED_TEST(serialization_tests, + ((test_flat_map)) + ((text_archive)(xml_archive)) + ((default_generator))) +} + +RUN_TESTS() diff --git a/test/legacy_archives/generate_legacy_archives.cpp b/test/legacy_archives/generate_legacy_archives.cpp new file mode 100644 index 00000000..55144dc5 --- /dev/null +++ b/test/legacy_archives/generate_legacy_archives.cpp @@ -0,0 +1,270 @@ +/* Copyright 2023 Joaquin M Lopez Munoz. + * 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) + * + * See https://www.boost.org/libs/unordered for library home page. + */ + +/* This program has been used to generate archives of Boost.Unordered + * containers with Boost 1.83, when serialization support was provided + * externally to Boost.Unordered in + * boost/serialization/boost_unordered_(map|set).hpp. Beginning with the + * release of native Boost.Unordered serialization capabilities in Boost + * 1.84, these archives are used to test backwards loading compatibility + * as enabled by BOOST_UNORDERED_ENABLE_SERIALIZATION_COMPATIBILITY_V0. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +template +struct random_generator +{ + Value operator()() + { + return static_cast(dist(gen)); + } + + std::uniform_int_distribution dist; + std::mt19937 gen{231}; +}; + +template<> +struct random_generator +{ + std::string operator()() + { + return std::to_string(rng()); + } + + random_generator<> rng; +}; + +template<> +struct random_generator:random_generator{}; + +template +struct random_generator> +{ + std::pair operator()() + { + return {rngt(),rngq()}; + } + + random_generator rngt; + random_generator rngq; +}; + +template +struct non_const +{ + typedef T type; +}; + +template +struct non_const +{ + using type=typename non_const::type; +}; + +template +struct non_const> +{ + using type=std::pair< + typename non_const::type, + typename non_const::type>; +}; + +template +void generate_legacy_archive(const char* filename,std::size_t n) +{ + using value_type=typename Container::value_type; + using vector=std::vector::type>; + + Container c; + vector v; + random_generator rng; + std::uniform_int_distribution<> repeat(0,1); + std::mt19937 gen{231}; + + for(std::size_t i=0;i,boost::archive::text_oarchive + >("map_int_0.txt",0); + generate_legacy_archive< + boost::unordered_map,boost::archive::text_oarchive + >("map_int_10.txt",10); + generate_legacy_archive< + boost::unordered_map,boost::archive::text_oarchive + >("map_int_100.txt",100); + generate_legacy_archive< + boost::unordered_map,boost::archive::text_oarchive + >("map_string_0.txt",0); + generate_legacy_archive< + boost::unordered_map,boost::archive::text_oarchive + >("map_string_10.txt",10); + generate_legacy_archive,boost::archive::text_oarchive + >("map_string_100.txt",100); + + generate_legacy_archive< + boost::unordered_multimap,boost::archive::text_oarchive + >("multimap_int_0.txt",0); + generate_legacy_archive< + boost::unordered_multimap,boost::archive::text_oarchive + >("multimap_int_10.txt",10); + generate_legacy_archive< + boost::unordered_multimap,boost::archive::text_oarchive + >("multimap_int_100.txt",100); + generate_legacy_archive< + boost::unordered_multimap,boost::archive::text_oarchive + >("multimap_string_0.txt",0); + generate_legacy_archive< + boost::unordered_multimap,boost::archive::text_oarchive + >("multimap_string_10.txt",10); + generate_legacy_archive< + boost::unordered_multimap,boost::archive::text_oarchive + >("multimap_string_100.txt",100); + + generate_legacy_archive< + boost::unordered_set,boost::archive::text_oarchive + >("set_int_0.txt",0); + generate_legacy_archive< + boost::unordered_set,boost::archive::text_oarchive + >("set_int_10.txt",10); + generate_legacy_archive< + boost::unordered_set,boost::archive::text_oarchive + >("set_int_100.txt",100); + generate_legacy_archive< + boost::unordered_set,boost::archive::text_oarchive + >("set_string_0.txt",0); + generate_legacy_archive< + boost::unordered_set,boost::archive::text_oarchive + >("set_string_10.txt",10); + generate_legacy_archive< + boost::unordered_set,boost::archive::text_oarchive + >("set_string_100.txt",100); + + generate_legacy_archive< + boost::unordered_multiset,boost::archive::text_oarchive + >("multiset_int_0.txt",0); + generate_legacy_archive< + boost::unordered_multiset,boost::archive::text_oarchive + >("multiset_int_10.txt",10); + generate_legacy_archive< + boost::unordered_multiset,boost::archive::text_oarchive + >("multiset_int_100.txt",100); + generate_legacy_archive< + boost::unordered_multiset,boost::archive::text_oarchive + >("multiset_string_0.txt",0); + generate_legacy_archive< + boost::unordered_multiset,boost::archive::text_oarchive + >("multiset_string_10.txt",10); + generate_legacy_archive< + boost::unordered_multiset,boost::archive::text_oarchive + >("multiset_string_100.txt",100); + + generate_legacy_archive< + boost::unordered_map,boost::archive::xml_oarchive + >("map_int_0.xml",0); + generate_legacy_archive< + boost::unordered_map,boost::archive::xml_oarchive + >("map_int_10.xml",10); + generate_legacy_archive< + boost::unordered_map,boost::archive::xml_oarchive + >("map_int_100.xml",100); + generate_legacy_archive< + boost::unordered_map,boost::archive::xml_oarchive + >("map_string_0.xml",0); + generate_legacy_archive< + boost::unordered_map,boost::archive::xml_oarchive + >("map_string_10.xml",10); + generate_legacy_archive< + boost::unordered_map,boost::archive::xml_oarchive + >("map_string_100.xml",100); + + generate_legacy_archive< + boost::unordered_multimap,boost::archive::xml_oarchive + >("multimap_int_0.xml",0); + generate_legacy_archive< + boost::unordered_multimap,boost::archive::xml_oarchive + >("multimap_int_10.xml",10); + generate_legacy_archive< + boost::unordered_multimap,boost::archive::xml_oarchive + >("multimap_int_100.xml",100); + generate_legacy_archive< + boost::unordered_multimap,boost::archive::xml_oarchive + >("multimap_string_0.xml",0); + generate_legacy_archive< + boost::unordered_multimap,boost::archive::xml_oarchive + >("multimap_string_10.xml",10); + generate_legacy_archive< + boost::unordered_multimap,boost::archive::xml_oarchive + >("multimap_string_100.xml",100); + + generate_legacy_archive< + boost::unordered_set,boost::archive::xml_oarchive + >("set_int_0.xml",0); + generate_legacy_archive< + boost::unordered_set,boost::archive::xml_oarchive + >("set_int_10.xml",10); + generate_legacy_archive< + boost::unordered_set,boost::archive::xml_oarchive + >("set_int_100.xml",100); + generate_legacy_archive< + boost::unordered_set,boost::archive::xml_oarchive + >("set_string_0.xml",0); + generate_legacy_archive< + boost::unordered_set,boost::archive::xml_oarchive + >("set_string_10.xml",10); + generate_legacy_archive< + boost::unordered_set,boost::archive::xml_oarchive + >("set_string_100.xml",100); + + generate_legacy_archive< + boost::unordered_multiset,boost::archive::xml_oarchive + >("multiset_int_0.xml",0); + generate_legacy_archive< + boost::unordered_multiset,boost::archive::xml_oarchive + >("multiset_int_10.xml",10); + generate_legacy_archive< + boost::unordered_multiset,boost::archive::xml_oarchive + >("multiset_int_100.xml",100); + generate_legacy_archive< + boost::unordered_multiset,boost::archive::xml_oarchive + >("multiset_string_0.xml",0); + generate_legacy_archive< + boost::unordered_multiset,boost::archive::xml_oarchive + >("multiset_string_10.xml",10); + generate_legacy_archive< + boost::unordered_multiset,boost::archive::xml_oarchive + >("multiset_string_100.xml",100); + +} \ No newline at end of file diff --git a/test/legacy_archives/map_int_0.txt b/test/legacy_archives/map_int_0.txt new file mode 100644 index 00000000..0c851da6 --- /dev/null +++ b/test/legacy_archives/map_int_0.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 0 0 0 0 0 0 0 diff --git a/test/legacy_archives/map_int_0.xml b/test/legacy_archives/map_int_0.xml new file mode 100644 index 00000000..059687d4 --- /dev/null +++ b/test/legacy_archives/map_int_0.xml @@ -0,0 +1,14 @@ + + + + + 0 + 0 + 0 + + + 0 + 0 + + + diff --git a/test/legacy_archives/map_int_10.txt b/test/legacy_archives/map_int_10.txt new file mode 100644 index 00000000..bdb23135 --- /dev/null +++ b/test/legacy_archives/map_int_10.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 10 13 0 0 0 2097663454 2097663454 -1785808236 -1785808236 -938475945 -938475945 1354395138 1354395138 581989062 581989062 -1694006096 -1694006096 1832705803 1832705803 -743509129 -743509129 1021729225 1021729225 -1168265900 -1168265900 0 0 14 0 0 0 -938475945 -938475945 -938475945 -938475945 -1694006096 -1694006096 -1785808236 -1785808236 1021729225 1021729225 1021729225 1021729225 1832705803 1832705803 1832705803 1832705803 581989062 581989062 1354395138 1354395138 2097663454 2097663454 -743509129 -743509129 -743509129 -743509129 -1168265900 -1168265900 diff --git a/test/legacy_archives/map_int_10.xml b/test/legacy_archives/map_int_10.xml new file mode 100644 index 00000000..1d7232eb --- /dev/null +++ b/test/legacy_archives/map_int_10.xml @@ -0,0 +1,110 @@ + + + + + 10 + 13 + 0 + + 2097663454 + 2097663454 + + + -1785808236 + -1785808236 + + + -938475945 + -938475945 + + + 1354395138 + 1354395138 + + + 581989062 + 581989062 + + + -1694006096 + -1694006096 + + + 1832705803 + 1832705803 + + + -743509129 + -743509129 + + + 1021729225 + 1021729225 + + + -1168265900 + -1168265900 + + + + 14 + 0 + + -938475945 + -938475945 + + + -938475945 + -938475945 + + + -1694006096 + -1694006096 + + + -1785808236 + -1785808236 + + + 1021729225 + 1021729225 + + + 1021729225 + 1021729225 + + + 1832705803 + 1832705803 + + + 1832705803 + 1832705803 + + + 581989062 + 581989062 + + + 1354395138 + 1354395138 + + + 2097663454 + 2097663454 + + + -743509129 + -743509129 + + + -743509129 + -743509129 + + + -1168265900 + -1168265900 + + + + diff --git a/test/legacy_archives/map_int_100.txt b/test/legacy_archives/map_int_100.txt new file mode 100644 index 00000000..1274e1da --- /dev/null +++ b/test/legacy_archives/map_int_100.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 100 193 0 0 0 1775667486 1775667486 -948676228 -948676228 -1108026676 -1108026676 -1866983349 -1866983349 258343568 258343568 -1068590402 -1068590402 -432548865 -432548865 177811234 177811234 5018725 5018725 190104374 190104374 1315739433 1315739433 -1995826660 -1995826660 -305386173 -305386173 287343763 287343763 1241175627 1241175627 109292002 109292002 1021729225 1021729225 918842470 918842470 -1426106865 -1426106865 -1338732474 -1338732474 669358715 669358715 183526573 183526573 -938475945 -938475945 -1694006096 -1694006096 1630722604 1630722604 -1933552094 -1933552094 257760945 257760945 390937317 390937317 -1510933233 -1510933233 259868705 259868705 -38527737 -38527737 -551129560 -551129560 1832705803 1832705803 607596425 607596425 -1520512970 -1520512970 -1674340339 -1674340339 1421489007 1421489007 -501526237 -501526237 -1873731147 -1873731147 -1877186230 -1877186230 -218590163 -218590163 647803737 647803737 -859679032 -859679032 967560929 967560929 -815473344 -815473344 -487119163 -487119163 -1546216506 -1546216506 1859681623 1859681623 -1040862600 -1040862600 -893024018 -893024018 -1252588227 -1252588227 -1319261042 -1319261042 -1785808236 -1785808236 1198739057 1198739057 -1469084794 -1469084794 473010817 473010817 1481537722 1481537722 2138619156 2138619156 -1039351567 -1039351567 -493829536 -493829536 411876340 411876340 -364116164 -364116164 776215953 776215953 1568788209 1568788209 -1631204972 -1631204972 601527218 601527218 -232190041 -232190041 286273879 286273879 2075478837 2075478837 -1168265900 -1168265900 581989062 581989062 178482033 178482033 1354395138 1354395138 -1530408968 -1530408968 -414767254 -414767254 1970368353 1970368353 -1967815281 -1967815281 941660988 941660988 1786883066 1786883066 670291604 670291604 -1803607012 -1803607012 1829132124 1829132124 -432502583 -432502583 -1642734171 -1642734171 -425048532 -425048532 2097663454 2097663454 -1938999974 -1938999974 -917350225 -917350225 2056892401 2056892401 -55935255 -55935255 -1802192500 -1802192500 -418860175 -418860175 -2146202839 -2146202839 310524955 310524955 159865104 159865104 -265464733 -265464733 -1996442747 -1996442747 430136711 430136711 -743509129 -743509129 167237906 167237906 0 0 152 0 0 0 -938475945 -938475945 -938475945 -938475945 -1694006096 -1694006096 -1785808236 -1785808236 1021729225 1021729225 1021729225 1021729225 1832705803 1832705803 1832705803 1832705803 581989062 581989062 1354395138 1354395138 2097663454 2097663454 -743509129 -743509129 -743509129 -743509129 -1168265900 -1168265900 -414767254 -414767254 -1039351567 -1039351567 -1039351567 -1039351567 167237906 167237906 177811234 177811234 -364116164 -364116164 -1933552094 -1933552094 259868705 259868705 259868705 259868705 -501526237 -501526237 -501526237 -501526237 776215953 776215953 776215953 776215953 1630722604 1630722604 310524955 310524955 310524955 310524955 473010817 473010817 473010817 473010817 1970368353 1970368353 1970368353 1970368353 647803737 647803737 647803737 647803737 -1252588227 -1252588227 -1252588227 -1252588227 669358715 669358715 669358715 669358715 2075478837 2075478837 2075478837 2075478837 -1995826660 -1995826660 109292002 109292002 1421489007 1421489007 1421489007 1421489007 287343763 287343763 287343763 287343763 -1108026676 -1108026676 1829132124 1829132124 -1546216506 -1546216506 941660988 941660988 -305386173 -305386173 -305386173 -305386173 -815473344 -815473344 -1877186230 -1877186230 601527218 601527218 -38527737 -38527737 -38527737 -38527737 -1068590402 -1068590402 1568788209 1568788209 1568788209 1568788209 1198739057 1198739057 1198739057 1198739057 2138619156 2138619156 -218590163 -218590163 -218590163 -218590163 -1469084794 -1469084794 -493829536 -493829536 -232190041 -232190041 -232190041 -232190041 -1674340339 -1674340339 -1674340339 -1674340339 1775667486 1775667486 -948676228 -948676228 -1338732474 -1338732474 178482033 178482033 178482033 178482033 918842470 918842470 -917350225 -917350225 -917350225 -917350225 390937317 390937317 390937317 390937317 -418860175 -418860175 -418860175 -418860175 670291604 670291604 1859681623 1859681623 1859681623 1859681623 1241175627 1241175627 1241175627 1241175627 -487119163 -487119163 -487119163 -487119163 1315739433 1315739433 1315739433 1315739433 -1938999974 -1938999974 1786883066 1786883066 -55935255 -55935255 -55935255 -55935255 -2146202839 -2146202839 -2146202839 -2146202839 -1866983349 -1866983349 -1866983349 -1866983349 607596425 607596425 607596425 607596425 -425048532 -425048532 -893024018 -893024018 -1873731147 -1873731147 -1873731147 -1873731147 159865104 159865104 411876340 411876340 2056892401 2056892401 2056892401 2056892401 -1642734171 -1642734171 -1642734171 -1642734171 -1996442747 -1996442747 -1996442747 -1996442747 257760945 257760945 257760945 257760945 -1631204972 -1631204972 -1802192500 -1802192500 -432548865 -432548865 -432548865 -432548865 -551129560 -551129560 -1319261042 -1319261042 -859679032 -859679032 -1510933233 -1510933233 -1510933233 -1510933233 286273879 286273879 286273879 286273879 1481537722 1481537722 258343568 258343568 -265464733 -265464733 -265464733 -265464733 -432502583 -432502583 -432502583 -432502583 -1967815281 -1967815281 -1967815281 -1967815281 -1530408968 -1530408968 967560929 967560929 967560929 967560929 -1426106865 -1426106865 -1426106865 -1426106865 190104374 190104374 430136711 430136711 430136711 430136711 -1803607012 -1803607012 -1520512970 -1520512970 5018725 5018725 5018725 5018725 183526573 183526573 183526573 183526573 -1040862600 -1040862600 diff --git a/test/legacy_archives/map_int_100.xml b/test/legacy_archives/map_int_100.xml new file mode 100644 index 00000000..2bee9ee2 --- /dev/null +++ b/test/legacy_archives/map_int_100.xml @@ -0,0 +1,1022 @@ + + + + + 100 + 193 + 0 + + 1775667486 + 1775667486 + + + -948676228 + -948676228 + + + -1108026676 + -1108026676 + + + -1866983349 + -1866983349 + + + 258343568 + 258343568 + + + -1068590402 + -1068590402 + + + -432548865 + -432548865 + + + 177811234 + 177811234 + + + 5018725 + 5018725 + + + 190104374 + 190104374 + + + 1315739433 + 1315739433 + + + -1995826660 + -1995826660 + + + -305386173 + -305386173 + + + 287343763 + 287343763 + + + 1241175627 + 1241175627 + + + 109292002 + 109292002 + + + 1021729225 + 1021729225 + + + 918842470 + 918842470 + + + -1426106865 + -1426106865 + + + -1338732474 + -1338732474 + + + 669358715 + 669358715 + + + 183526573 + 183526573 + + + -938475945 + -938475945 + + + -1694006096 + -1694006096 + + + 1630722604 + 1630722604 + + + -1933552094 + -1933552094 + + + 257760945 + 257760945 + + + 390937317 + 390937317 + + + -1510933233 + -1510933233 + + + 259868705 + 259868705 + + + -38527737 + -38527737 + + + -551129560 + -551129560 + + + 1832705803 + 1832705803 + + + 607596425 + 607596425 + + + -1520512970 + -1520512970 + + + -1674340339 + -1674340339 + + + 1421489007 + 1421489007 + + + -501526237 + -501526237 + + + -1873731147 + -1873731147 + + + -1877186230 + -1877186230 + + + -218590163 + -218590163 + + + 647803737 + 647803737 + + + -859679032 + -859679032 + + + 967560929 + 967560929 + + + -815473344 + -815473344 + + + -487119163 + -487119163 + + + -1546216506 + -1546216506 + + + 1859681623 + 1859681623 + + + -1040862600 + -1040862600 + + + -893024018 + -893024018 + + + -1252588227 + -1252588227 + + + -1319261042 + -1319261042 + + + -1785808236 + -1785808236 + + + 1198739057 + 1198739057 + + + -1469084794 + -1469084794 + + + 473010817 + 473010817 + + + 1481537722 + 1481537722 + + + 2138619156 + 2138619156 + + + -1039351567 + -1039351567 + + + -493829536 + -493829536 + + + 411876340 + 411876340 + + + -364116164 + -364116164 + + + 776215953 + 776215953 + + + 1568788209 + 1568788209 + + + -1631204972 + -1631204972 + + + 601527218 + 601527218 + + + -232190041 + -232190041 + + + 286273879 + 286273879 + + + 2075478837 + 2075478837 + + + -1168265900 + -1168265900 + + + 581989062 + 581989062 + + + 178482033 + 178482033 + + + 1354395138 + 1354395138 + + + -1530408968 + -1530408968 + + + -414767254 + -414767254 + + + 1970368353 + 1970368353 + + + -1967815281 + -1967815281 + + + 941660988 + 941660988 + + + 1786883066 + 1786883066 + + + 670291604 + 670291604 + + + -1803607012 + -1803607012 + + + 1829132124 + 1829132124 + + + -432502583 + -432502583 + + + -1642734171 + -1642734171 + + + -425048532 + -425048532 + + + 2097663454 + 2097663454 + + + -1938999974 + -1938999974 + + + -917350225 + -917350225 + + + 2056892401 + 2056892401 + + + -55935255 + -55935255 + + + -1802192500 + -1802192500 + + + -418860175 + -418860175 + + + -2146202839 + -2146202839 + + + 310524955 + 310524955 + + + 159865104 + 159865104 + + + -265464733 + -265464733 + + + -1996442747 + -1996442747 + + + 430136711 + 430136711 + + + -743509129 + -743509129 + + + 167237906 + 167237906 + + + + 152 + 0 + + -938475945 + -938475945 + + + -938475945 + -938475945 + + + -1694006096 + -1694006096 + + + -1785808236 + -1785808236 + + + 1021729225 + 1021729225 + + + 1021729225 + 1021729225 + + + 1832705803 + 1832705803 + + + 1832705803 + 1832705803 + + + 581989062 + 581989062 + + + 1354395138 + 1354395138 + + + 2097663454 + 2097663454 + + + -743509129 + -743509129 + + + -743509129 + -743509129 + + + -1168265900 + -1168265900 + + + -414767254 + -414767254 + + + -1039351567 + -1039351567 + + + -1039351567 + -1039351567 + + + 167237906 + 167237906 + + + 177811234 + 177811234 + + + -364116164 + -364116164 + + + -1933552094 + -1933552094 + + + 259868705 + 259868705 + + + 259868705 + 259868705 + + + -501526237 + -501526237 + + + -501526237 + -501526237 + + + 776215953 + 776215953 + + + 776215953 + 776215953 + + + 1630722604 + 1630722604 + + + 310524955 + 310524955 + + + 310524955 + 310524955 + + + 473010817 + 473010817 + + + 473010817 + 473010817 + + + 1970368353 + 1970368353 + + + 1970368353 + 1970368353 + + + 647803737 + 647803737 + + + 647803737 + 647803737 + + + -1252588227 + -1252588227 + + + -1252588227 + -1252588227 + + + 669358715 + 669358715 + + + 669358715 + 669358715 + + + 2075478837 + 2075478837 + + + 2075478837 + 2075478837 + + + -1995826660 + -1995826660 + + + 109292002 + 109292002 + + + 1421489007 + 1421489007 + + + 1421489007 + 1421489007 + + + 287343763 + 287343763 + + + 287343763 + 287343763 + + + -1108026676 + -1108026676 + + + 1829132124 + 1829132124 + + + -1546216506 + -1546216506 + + + 941660988 + 941660988 + + + -305386173 + -305386173 + + + -305386173 + -305386173 + + + -815473344 + -815473344 + + + -1877186230 + -1877186230 + + + 601527218 + 601527218 + + + -38527737 + -38527737 + + + -38527737 + -38527737 + + + -1068590402 + -1068590402 + + + 1568788209 + 1568788209 + + + 1568788209 + 1568788209 + + + 1198739057 + 1198739057 + + + 1198739057 + 1198739057 + + + 2138619156 + 2138619156 + + + -218590163 + -218590163 + + + -218590163 + -218590163 + + + -1469084794 + -1469084794 + + + -493829536 + -493829536 + + + -232190041 + -232190041 + + + -232190041 + -232190041 + + + -1674340339 + -1674340339 + + + -1674340339 + -1674340339 + + + 1775667486 + 1775667486 + + + -948676228 + -948676228 + + + -1338732474 + -1338732474 + + + 178482033 + 178482033 + + + 178482033 + 178482033 + + + 918842470 + 918842470 + + + -917350225 + -917350225 + + + -917350225 + -917350225 + + + 390937317 + 390937317 + + + 390937317 + 390937317 + + + -418860175 + -418860175 + + + -418860175 + -418860175 + + + 670291604 + 670291604 + + + 1859681623 + 1859681623 + + + 1859681623 + 1859681623 + + + 1241175627 + 1241175627 + + + 1241175627 + 1241175627 + + + -487119163 + -487119163 + + + -487119163 + -487119163 + + + 1315739433 + 1315739433 + + + 1315739433 + 1315739433 + + + -1938999974 + -1938999974 + + + 1786883066 + 1786883066 + + + -55935255 + -55935255 + + + -55935255 + -55935255 + + + -2146202839 + -2146202839 + + + -2146202839 + -2146202839 + + + -1866983349 + -1866983349 + + + -1866983349 + -1866983349 + + + 607596425 + 607596425 + + + 607596425 + 607596425 + + + -425048532 + -425048532 + + + -893024018 + -893024018 + + + -1873731147 + -1873731147 + + + -1873731147 + -1873731147 + + + 159865104 + 159865104 + + + 411876340 + 411876340 + + + 2056892401 + 2056892401 + + + 2056892401 + 2056892401 + + + -1642734171 + -1642734171 + + + -1642734171 + -1642734171 + + + -1996442747 + -1996442747 + + + -1996442747 + -1996442747 + + + 257760945 + 257760945 + + + 257760945 + 257760945 + + + -1631204972 + -1631204972 + + + -1802192500 + -1802192500 + + + -432548865 + -432548865 + + + -432548865 + -432548865 + + + -551129560 + -551129560 + + + -1319261042 + -1319261042 + + + -859679032 + -859679032 + + + -1510933233 + -1510933233 + + + -1510933233 + -1510933233 + + + 286273879 + 286273879 + + + 286273879 + 286273879 + + + 1481537722 + 1481537722 + + + 258343568 + 258343568 + + + -265464733 + -265464733 + + + -265464733 + -265464733 + + + -432502583 + -432502583 + + + -432502583 + -432502583 + + + -1967815281 + -1967815281 + + + -1967815281 + -1967815281 + + + -1530408968 + -1530408968 + + + 967560929 + 967560929 + + + 967560929 + 967560929 + + + -1426106865 + -1426106865 + + + -1426106865 + -1426106865 + + + 190104374 + 190104374 + + + 430136711 + 430136711 + + + 430136711 + 430136711 + + + -1803607012 + -1803607012 + + + -1520512970 + -1520512970 + + + 5018725 + 5018725 + + + 5018725 + 5018725 + + + 183526573 + 183526573 + + + 183526573 + 183526573 + + + -1040862600 + -1040862600 + + + + diff --git a/test/legacy_archives/map_string_0.txt b/test/legacy_archives/map_string_0.txt new file mode 100644 index 00000000..0c851da6 --- /dev/null +++ b/test/legacy_archives/map_string_0.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 0 0 0 0 0 0 0 diff --git a/test/legacy_archives/map_string_0.xml b/test/legacy_archives/map_string_0.xml new file mode 100644 index 00000000..059687d4 --- /dev/null +++ b/test/legacy_archives/map_string_0.xml @@ -0,0 +1,14 @@ + + + + + 0 + 0 + 0 + + + 0 + 0 + + + diff --git a/test/legacy_archives/map_string_10.txt b/test/legacy_archives/map_string_10.txt new file mode 100644 index 00000000..39b7c207 --- /dev/null +++ b/test/legacy_archives/map_string_10.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 10 13 0 0 0 10 1832705803 10 1832705803 10 2097663454 10 2097663454 10 3551458167 10 3551458167 10 2509159060 10 2509159060 10 2600961200 10 2600961200 9 581989062 9 581989062 10 1021729225 10 1021729225 10 3126701396 10 3126701396 10 1354395138 10 1354395138 10 3356491351 10 3356491351 0 0 14 0 0 0 10 3356491351 10 3356491351 10 3356491351 10 3356491351 10 2600961200 10 2600961200 10 2509159060 10 2509159060 10 1021729225 10 1021729225 10 1021729225 10 1021729225 10 1832705803 10 1832705803 10 1832705803 10 1832705803 9 581989062 9 581989062 10 1354395138 10 1354395138 10 2097663454 10 2097663454 10 3551458167 10 3551458167 10 3551458167 10 3551458167 10 3126701396 10 3126701396 diff --git a/test/legacy_archives/map_string_10.xml b/test/legacy_archives/map_string_10.xml new file mode 100644 index 00000000..3d4304f3 --- /dev/null +++ b/test/legacy_archives/map_string_10.xml @@ -0,0 +1,110 @@ + + + + + 10 + 13 + 0 + + 1832705803 + 1832705803 + + + 2097663454 + 2097663454 + + + 3551458167 + 3551458167 + + + 2509159060 + 2509159060 + + + 2600961200 + 2600961200 + + + 581989062 + 581989062 + + + 1021729225 + 1021729225 + + + 3126701396 + 3126701396 + + + 1354395138 + 1354395138 + + + 3356491351 + 3356491351 + + + + 14 + 0 + + 3356491351 + 3356491351 + + + 3356491351 + 3356491351 + + + 2600961200 + 2600961200 + + + 2509159060 + 2509159060 + + + 1021729225 + 1021729225 + + + 1021729225 + 1021729225 + + + 1832705803 + 1832705803 + + + 1832705803 + 1832705803 + + + 581989062 + 581989062 + + + 1354395138 + 1354395138 + + + 2097663454 + 2097663454 + + + 3551458167 + 3551458167 + + + 3551458167 + 3551458167 + + + 3126701396 + 3126701396 + + + + diff --git a/test/legacy_archives/map_string_100.txt b/test/legacy_archives/map_string_100.txt new file mode 100644 index 00000000..1be2c3a4 --- /dev/null +++ b/test/legacy_archives/map_string_100.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 100 193 0 0 0 10 1970368353 10 1970368353 10 2417781066 10 2417781066 10 3186940620 10 3186940620 10 1421489007 10 1421489007 9 776215953 9 776215953 10 1775667486 10 1775667486 9 159865104 9 159865104 10 2355967322 10 2355967322 10 2748750790 10 2748750790 10 1832705803 10 1832705803 10 4239032041 10 4239032041 10 3876107121 10 3876107121 10 3479493952 10 3479493952 10 2600961200 10 2600961200 10 1241175627 10 1241175627 9 258343568 9 258343568 10 1630722604 10 1630722604 10 3255615729 10 3255615729 7 5018725 7 5018725 10 2774454326 10 2774454326 10 2825882502 10 2825882502 9 581989062 9 581989062 9 178482033 9 178482033 10 1786883066 10 1786883066 9 286273879 9 286273879 10 2298524549 10 2298524549 9 259868705 9 259868705 9 601527218 9 601527218 9 411876340 9 411876340 10 4029502563 10 4029502563 9 109292002 9 109292002 9 941660988 9 941660988 10 4256439559 10 4256439559 10 3401943278 10 3401943278 10 2663762324 10 2663762324 10 3042379069 10 3042379069 10 2509159060 10 2509159060 10 1859681623 10 1859681623 10 3356491351 10 3356491351 10 2620626957 10 2620626957 10 2652233125 10 2652233125 10 1568788209 10 1568788209 9 607596425 9 607596425 10 2868860431 10 2868860431 9 670291604 9 670291604 10 2764558328 10 2764558328 10 3226376894 10 3226376894 10 3930851132 10 3930851132 10 3801137760 10 3801137760 9 287343763 9 287343763 10 2138619156 10 2138619156 9 257760945 9 257760945 9 967560929 9 967560929 10 2056892401 10 2056892401 10 1829132124 10 1829132124 10 3807848133 10 3807848133 9 310524955 9 310524955 9 190104374 9 190104374 10 1481537722 10 1481537722 10 2361415202 10 2361415202 10 2148764457 10 2148764457 10 3862464713 10 3862464713 10 3862418431 10 3862418431 9 918842470 9 918842470 9 183526573 9 183526573 10 2097663454 10 2097663454 10 3377617071 10 3377617071 9 167237906 9 167237906 10 2492774796 10 2492774796 10 3254104696 10 3254104696 10 3551458167 10 3551458167 10 3989581123 10 3989581123 10 2427983947 10 2427983947 9 430136711 9 430136711 10 2975706254 10 2975706254 10 1198739057 10 1198739057 9 473010817 9 473010817 10 2075478837 10 2075478837 10 2956234822 10 2956234822 10 3435288264 10 3435288264 10 2491360284 10 2491360284 10 4076377133 10 4076377133 10 3869918764 10 3869918764 9 647803737 9 647803737 9 669358715 9 669358715 9 177811234 9 177811234 10 1021729225 10 1021729225 10 2327152015 10 2327152015 10 3793441059 10 3793441059 9 390937317 9 390937317 10 2421236149 10 2421236149 10 3346291068 10 3346291068 10 3880200042 10 3880200042 10 2299140636 10 2299140636 10 3743837736 10 3743837736 10 1315739433 10 1315739433 10 2784034063 10 2784034063 10 1354395138 10 1354395138 10 4062777255 10 4062777255 10 3126701396 10 3126701396 0 0 152 0 0 0 10 3356491351 10 3356491351 10 3356491351 10 3356491351 10 2600961200 10 2600961200 10 2509159060 10 2509159060 10 1021729225 10 1021729225 10 1021729225 10 1021729225 10 1832705803 10 1832705803 10 1832705803 10 1832705803 9 581989062 9 581989062 10 1354395138 10 1354395138 10 2097663454 10 2097663454 10 3551458167 10 3551458167 10 3551458167 10 3551458167 10 3126701396 10 3126701396 10 3880200042 10 3880200042 10 3255615729 10 3255615729 10 3255615729 10 3255615729 9 167237906 9 167237906 9 177811234 9 177811234 10 3930851132 10 3930851132 10 2361415202 10 2361415202 9 259868705 9 259868705 9 259868705 9 259868705 10 3793441059 10 3793441059 10 3793441059 10 3793441059 9 776215953 9 776215953 9 776215953 9 776215953 10 1630722604 10 1630722604 9 310524955 9 310524955 9 310524955 9 310524955 9 473010817 9 473010817 9 473010817 9 473010817 10 1970368353 10 1970368353 10 1970368353 10 1970368353 9 647803737 9 647803737 9 647803737 9 647803737 10 3042379069 10 3042379069 10 3042379069 10 3042379069 9 669358715 9 669358715 9 669358715 9 669358715 10 2075478837 10 2075478837 10 2075478837 10 2075478837 10 2299140636 10 2299140636 9 109292002 9 109292002 10 1421489007 10 1421489007 10 1421489007 10 1421489007 9 287343763 9 287343763 9 287343763 9 287343763 10 3186940620 10 3186940620 10 1829132124 10 1829132124 10 2748750790 10 2748750790 9 941660988 9 941660988 10 3989581123 10 3989581123 10 3989581123 10 3989581123 10 3479493952 10 3479493952 10 2417781066 10 2417781066 9 601527218 9 601527218 10 4256439559 10 4256439559 10 4256439559 10 4256439559 10 3226376894 10 3226376894 10 1568788209 10 1568788209 10 1568788209 10 1568788209 10 1198739057 10 1198739057 10 1198739057 10 1198739057 10 2138619156 10 2138619156 10 4076377133 10 4076377133 10 4076377133 10 4076377133 10 2825882502 10 2825882502 10 3801137760 10 3801137760 10 4062777255 10 4062777255 10 4062777255 10 4062777255 10 2620626957 10 2620626957 10 2620626957 10 2620626957 10 1775667486 10 1775667486 10 3346291068 10 3346291068 10 2956234822 10 2956234822 9 178482033 9 178482033 9 178482033 9 178482033 9 918842470 9 918842470 10 3377617071 10 3377617071 10 3377617071 10 3377617071 9 390937317 9 390937317 9 390937317 9 390937317 10 3876107121 10 3876107121 10 3876107121 10 3876107121 9 670291604 9 670291604 10 1859681623 10 1859681623 10 1859681623 10 1859681623 10 1241175627 10 1241175627 10 1241175627 10 1241175627 10 3807848133 10 3807848133 10 3807848133 10 3807848133 10 1315739433 10 1315739433 10 1315739433 10 1315739433 10 2355967322 10 2355967322 10 1786883066 10 1786883066 10 4239032041 10 4239032041 10 4239032041 10 4239032041 10 2148764457 10 2148764457 10 2148764457 10 2148764457 10 2427983947 10 2427983947 10 2427983947 10 2427983947 9 607596425 9 607596425 9 607596425 9 607596425 10 3869918764 10 3869918764 10 3401943278 10 3401943278 10 2421236149 10 2421236149 10 2421236149 10 2421236149 9 159865104 9 159865104 9 411876340 9 411876340 10 2056892401 10 2056892401 10 2056892401 10 2056892401 10 2652233125 10 2652233125 10 2652233125 10 2652233125 10 2298524549 10 2298524549 10 2298524549 10 2298524549 9 257760945 9 257760945 9 257760945 9 257760945 10 2663762324 10 2663762324 10 2492774796 10 2492774796 10 3862418431 10 3862418431 10 3862418431 10 3862418431 10 3743837736 10 3743837736 10 2975706254 10 2975706254 10 3435288264 10 3435288264 10 2784034063 10 2784034063 10 2784034063 10 2784034063 9 286273879 9 286273879 9 286273879 9 286273879 10 1481537722 10 1481537722 9 258343568 9 258343568 10 4029502563 10 4029502563 10 4029502563 10 4029502563 10 3862464713 10 3862464713 10 3862464713 10 3862464713 10 2327152015 10 2327152015 10 2327152015 10 2327152015 10 2764558328 10 2764558328 9 967560929 9 967560929 9 967560929 9 967560929 10 2868860431 10 2868860431 10 2868860431 10 2868860431 9 190104374 9 190104374 9 430136711 9 430136711 9 430136711 9 430136711 10 2491360284 10 2491360284 10 2774454326 10 2774454326 7 5018725 7 5018725 7 5018725 7 5018725 9 183526573 9 183526573 9 183526573 9 183526573 10 3254104696 10 3254104696 diff --git a/test/legacy_archives/map_string_100.xml b/test/legacy_archives/map_string_100.xml new file mode 100644 index 00000000..9178f59d --- /dev/null +++ b/test/legacy_archives/map_string_100.xml @@ -0,0 +1,1022 @@ + + + + + 100 + 193 + 0 + + 1970368353 + 1970368353 + + + 2417781066 + 2417781066 + + + 3186940620 + 3186940620 + + + 1421489007 + 1421489007 + + + 776215953 + 776215953 + + + 1775667486 + 1775667486 + + + 159865104 + 159865104 + + + 2355967322 + 2355967322 + + + 2748750790 + 2748750790 + + + 1832705803 + 1832705803 + + + 4239032041 + 4239032041 + + + 3876107121 + 3876107121 + + + 3479493952 + 3479493952 + + + 2600961200 + 2600961200 + + + 1241175627 + 1241175627 + + + 258343568 + 258343568 + + + 1630722604 + 1630722604 + + + 3255615729 + 3255615729 + + + 5018725 + 5018725 + + + 2774454326 + 2774454326 + + + 2825882502 + 2825882502 + + + 581989062 + 581989062 + + + 178482033 + 178482033 + + + 1786883066 + 1786883066 + + + 286273879 + 286273879 + + + 2298524549 + 2298524549 + + + 259868705 + 259868705 + + + 601527218 + 601527218 + + + 411876340 + 411876340 + + + 4029502563 + 4029502563 + + + 109292002 + 109292002 + + + 941660988 + 941660988 + + + 4256439559 + 4256439559 + + + 3401943278 + 3401943278 + + + 2663762324 + 2663762324 + + + 3042379069 + 3042379069 + + + 2509159060 + 2509159060 + + + 1859681623 + 1859681623 + + + 3356491351 + 3356491351 + + + 2620626957 + 2620626957 + + + 2652233125 + 2652233125 + + + 1568788209 + 1568788209 + + + 607596425 + 607596425 + + + 2868860431 + 2868860431 + + + 670291604 + 670291604 + + + 2764558328 + 2764558328 + + + 3226376894 + 3226376894 + + + 3930851132 + 3930851132 + + + 3801137760 + 3801137760 + + + 287343763 + 287343763 + + + 2138619156 + 2138619156 + + + 257760945 + 257760945 + + + 967560929 + 967560929 + + + 2056892401 + 2056892401 + + + 1829132124 + 1829132124 + + + 3807848133 + 3807848133 + + + 310524955 + 310524955 + + + 190104374 + 190104374 + + + 1481537722 + 1481537722 + + + 2361415202 + 2361415202 + + + 2148764457 + 2148764457 + + + 3862464713 + 3862464713 + + + 3862418431 + 3862418431 + + + 918842470 + 918842470 + + + 183526573 + 183526573 + + + 2097663454 + 2097663454 + + + 3377617071 + 3377617071 + + + 167237906 + 167237906 + + + 2492774796 + 2492774796 + + + 3254104696 + 3254104696 + + + 3551458167 + 3551458167 + + + 3989581123 + 3989581123 + + + 2427983947 + 2427983947 + + + 430136711 + 430136711 + + + 2975706254 + 2975706254 + + + 1198739057 + 1198739057 + + + 473010817 + 473010817 + + + 2075478837 + 2075478837 + + + 2956234822 + 2956234822 + + + 3435288264 + 3435288264 + + + 2491360284 + 2491360284 + + + 4076377133 + 4076377133 + + + 3869918764 + 3869918764 + + + 647803737 + 647803737 + + + 669358715 + 669358715 + + + 177811234 + 177811234 + + + 1021729225 + 1021729225 + + + 2327152015 + 2327152015 + + + 3793441059 + 3793441059 + + + 390937317 + 390937317 + + + 2421236149 + 2421236149 + + + 3346291068 + 3346291068 + + + 3880200042 + 3880200042 + + + 2299140636 + 2299140636 + + + 3743837736 + 3743837736 + + + 1315739433 + 1315739433 + + + 2784034063 + 2784034063 + + + 1354395138 + 1354395138 + + + 4062777255 + 4062777255 + + + 3126701396 + 3126701396 + + + + 152 + 0 + + 3356491351 + 3356491351 + + + 3356491351 + 3356491351 + + + 2600961200 + 2600961200 + + + 2509159060 + 2509159060 + + + 1021729225 + 1021729225 + + + 1021729225 + 1021729225 + + + 1832705803 + 1832705803 + + + 1832705803 + 1832705803 + + + 581989062 + 581989062 + + + 1354395138 + 1354395138 + + + 2097663454 + 2097663454 + + + 3551458167 + 3551458167 + + + 3551458167 + 3551458167 + + + 3126701396 + 3126701396 + + + 3880200042 + 3880200042 + + + 3255615729 + 3255615729 + + + 3255615729 + 3255615729 + + + 167237906 + 167237906 + + + 177811234 + 177811234 + + + 3930851132 + 3930851132 + + + 2361415202 + 2361415202 + + + 259868705 + 259868705 + + + 259868705 + 259868705 + + + 3793441059 + 3793441059 + + + 3793441059 + 3793441059 + + + 776215953 + 776215953 + + + 776215953 + 776215953 + + + 1630722604 + 1630722604 + + + 310524955 + 310524955 + + + 310524955 + 310524955 + + + 473010817 + 473010817 + + + 473010817 + 473010817 + + + 1970368353 + 1970368353 + + + 1970368353 + 1970368353 + + + 647803737 + 647803737 + + + 647803737 + 647803737 + + + 3042379069 + 3042379069 + + + 3042379069 + 3042379069 + + + 669358715 + 669358715 + + + 669358715 + 669358715 + + + 2075478837 + 2075478837 + + + 2075478837 + 2075478837 + + + 2299140636 + 2299140636 + + + 109292002 + 109292002 + + + 1421489007 + 1421489007 + + + 1421489007 + 1421489007 + + + 287343763 + 287343763 + + + 287343763 + 287343763 + + + 3186940620 + 3186940620 + + + 1829132124 + 1829132124 + + + 2748750790 + 2748750790 + + + 941660988 + 941660988 + + + 3989581123 + 3989581123 + + + 3989581123 + 3989581123 + + + 3479493952 + 3479493952 + + + 2417781066 + 2417781066 + + + 601527218 + 601527218 + + + 4256439559 + 4256439559 + + + 4256439559 + 4256439559 + + + 3226376894 + 3226376894 + + + 1568788209 + 1568788209 + + + 1568788209 + 1568788209 + + + 1198739057 + 1198739057 + + + 1198739057 + 1198739057 + + + 2138619156 + 2138619156 + + + 4076377133 + 4076377133 + + + 4076377133 + 4076377133 + + + 2825882502 + 2825882502 + + + 3801137760 + 3801137760 + + + 4062777255 + 4062777255 + + + 4062777255 + 4062777255 + + + 2620626957 + 2620626957 + + + 2620626957 + 2620626957 + + + 1775667486 + 1775667486 + + + 3346291068 + 3346291068 + + + 2956234822 + 2956234822 + + + 178482033 + 178482033 + + + 178482033 + 178482033 + + + 918842470 + 918842470 + + + 3377617071 + 3377617071 + + + 3377617071 + 3377617071 + + + 390937317 + 390937317 + + + 390937317 + 390937317 + + + 3876107121 + 3876107121 + + + 3876107121 + 3876107121 + + + 670291604 + 670291604 + + + 1859681623 + 1859681623 + + + 1859681623 + 1859681623 + + + 1241175627 + 1241175627 + + + 1241175627 + 1241175627 + + + 3807848133 + 3807848133 + + + 3807848133 + 3807848133 + + + 1315739433 + 1315739433 + + + 1315739433 + 1315739433 + + + 2355967322 + 2355967322 + + + 1786883066 + 1786883066 + + + 4239032041 + 4239032041 + + + 4239032041 + 4239032041 + + + 2148764457 + 2148764457 + + + 2148764457 + 2148764457 + + + 2427983947 + 2427983947 + + + 2427983947 + 2427983947 + + + 607596425 + 607596425 + + + 607596425 + 607596425 + + + 3869918764 + 3869918764 + + + 3401943278 + 3401943278 + + + 2421236149 + 2421236149 + + + 2421236149 + 2421236149 + + + 159865104 + 159865104 + + + 411876340 + 411876340 + + + 2056892401 + 2056892401 + + + 2056892401 + 2056892401 + + + 2652233125 + 2652233125 + + + 2652233125 + 2652233125 + + + 2298524549 + 2298524549 + + + 2298524549 + 2298524549 + + + 257760945 + 257760945 + + + 257760945 + 257760945 + + + 2663762324 + 2663762324 + + + 2492774796 + 2492774796 + + + 3862418431 + 3862418431 + + + 3862418431 + 3862418431 + + + 3743837736 + 3743837736 + + + 2975706254 + 2975706254 + + + 3435288264 + 3435288264 + + + 2784034063 + 2784034063 + + + 2784034063 + 2784034063 + + + 286273879 + 286273879 + + + 286273879 + 286273879 + + + 1481537722 + 1481537722 + + + 258343568 + 258343568 + + + 4029502563 + 4029502563 + + + 4029502563 + 4029502563 + + + 3862464713 + 3862464713 + + + 3862464713 + 3862464713 + + + 2327152015 + 2327152015 + + + 2327152015 + 2327152015 + + + 2764558328 + 2764558328 + + + 967560929 + 967560929 + + + 967560929 + 967560929 + + + 2868860431 + 2868860431 + + + 2868860431 + 2868860431 + + + 190104374 + 190104374 + + + 430136711 + 430136711 + + + 430136711 + 430136711 + + + 2491360284 + 2491360284 + + + 2774454326 + 2774454326 + + + 5018725 + 5018725 + + + 5018725 + 5018725 + + + 183526573 + 183526573 + + + 183526573 + 183526573 + + + 3254104696 + 3254104696 + + + + diff --git a/test/legacy_archives/multimap_int_0.txt b/test/legacy_archives/multimap_int_0.txt new file mode 100644 index 00000000..0c851da6 --- /dev/null +++ b/test/legacy_archives/multimap_int_0.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 0 0 0 0 0 0 0 diff --git a/test/legacy_archives/multimap_int_0.xml b/test/legacy_archives/multimap_int_0.xml new file mode 100644 index 00000000..059687d4 --- /dev/null +++ b/test/legacy_archives/multimap_int_0.xml @@ -0,0 +1,14 @@ + + + + + 0 + 0 + 0 + + + 0 + 0 + + + diff --git a/test/legacy_archives/multimap_int_10.txt b/test/legacy_archives/multimap_int_10.txt new file mode 100644 index 00000000..db010e1c --- /dev/null +++ b/test/legacy_archives/multimap_int_10.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 14 29 0 0 0 -938475945 -938475945 -938475945 -938475945 -1785808236 -1785808236 -1694006096 -1694006096 1021729225 1021729225 1021729225 1021729225 581989062 581989062 -1168265900 -1168265900 2097663454 2097663454 1354395138 1354395138 -743509129 -743509129 -743509129 -743509129 1832705803 1832705803 1832705803 1832705803 0 0 14 0 0 0 -938475945 -938475945 -938475945 -938475945 -1694006096 -1694006096 -1785808236 -1785808236 1021729225 1021729225 1021729225 1021729225 1832705803 1832705803 1832705803 1832705803 581989062 581989062 1354395138 1354395138 2097663454 2097663454 -743509129 -743509129 -743509129 -743509129 -1168265900 -1168265900 diff --git a/test/legacy_archives/multimap_int_10.xml b/test/legacy_archives/multimap_int_10.xml new file mode 100644 index 00000000..40160a0d --- /dev/null +++ b/test/legacy_archives/multimap_int_10.xml @@ -0,0 +1,126 @@ + + + + + 14 + 29 + 0 + + -938475945 + -938475945 + + + -938475945 + -938475945 + + + -1785808236 + -1785808236 + + + -1694006096 + -1694006096 + + + 1021729225 + 1021729225 + + + 1021729225 + 1021729225 + + + 581989062 + 581989062 + + + -1168265900 + -1168265900 + + + 2097663454 + 2097663454 + + + 1354395138 + 1354395138 + + + -743509129 + -743509129 + + + -743509129 + -743509129 + + + 1832705803 + 1832705803 + + + 1832705803 + 1832705803 + + + + 14 + 0 + + -938475945 + -938475945 + + + -938475945 + -938475945 + + + -1694006096 + -1694006096 + + + -1785808236 + -1785808236 + + + 1021729225 + 1021729225 + + + 1021729225 + 1021729225 + + + 1832705803 + 1832705803 + + + 1832705803 + 1832705803 + + + 581989062 + 581989062 + + + 1354395138 + 1354395138 + + + 2097663454 + 2097663454 + + + -743509129 + -743509129 + + + -743509129 + -743509129 + + + -1168265900 + -1168265900 + + + + diff --git a/test/legacy_archives/multimap_int_100.txt b/test/legacy_archives/multimap_int_100.txt new file mode 100644 index 00000000..906a7869 --- /dev/null +++ b/test/legacy_archives/multimap_int_100.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 152 193 0 0 0 1775667486 1775667486 -948676228 -948676228 -1108026676 -1108026676 -1866983349 -1866983349 -1866983349 -1866983349 258343568 258343568 -1068590402 -1068590402 -432548865 -432548865 -432548865 -432548865 177811234 177811234 5018725 5018725 5018725 5018725 190104374 190104374 1315739433 1315739433 1315739433 1315739433 -1995826660 -1995826660 -305386173 -305386173 -305386173 -305386173 287343763 287343763 287343763 287343763 1241175627 1241175627 1241175627 1241175627 109292002 109292002 1021729225 1021729225 1021729225 1021729225 -1426106865 -1426106865 -1426106865 -1426106865 918842470 918842470 -1338732474 -1338732474 669358715 669358715 669358715 669358715 183526573 183526573 183526573 183526573 -938475945 -938475945 -938475945 -938475945 -1694006096 -1694006096 1630722604 1630722604 -1933552094 -1933552094 257760945 257760945 257760945 257760945 -1510933233 -1510933233 -1510933233 -1510933233 390937317 390937317 390937317 390937317 259868705 259868705 259868705 259868705 -38527737 -38527737 -38527737 -38527737 -551129560 -551129560 1832705803 1832705803 1832705803 1832705803 607596425 607596425 607596425 607596425 -1520512970 -1520512970 -1674340339 -1674340339 -1674340339 -1674340339 -1873731147 -1873731147 -1873731147 -1873731147 1421489007 1421489007 1421489007 1421489007 -501526237 -501526237 -501526237 -501526237 -1877186230 -1877186230 -218590163 -218590163 -218590163 -218590163 647803737 647803737 647803737 647803737 -859679032 -859679032 967560929 967560929 967560929 967560929 -815473344 -815473344 -487119163 -487119163 -487119163 -487119163 -1546216506 -1546216506 1859681623 1859681623 1859681623 1859681623 -1040862600 -1040862600 -893024018 -893024018 -1319261042 -1319261042 -1252588227 -1252588227 -1252588227 -1252588227 -1785808236 -1785808236 1198739057 1198739057 1198739057 1198739057 -1469084794 -1469084794 473010817 473010817 473010817 473010817 1481537722 1481537722 2138619156 2138619156 -1039351567 -1039351567 -1039351567 -1039351567 -493829536 -493829536 411876340 411876340 -364116164 -364116164 776215953 776215953 776215953 776215953 1568788209 1568788209 1568788209 1568788209 -1631204972 -1631204972 601527218 601527218 286273879 286273879 286273879 286273879 -232190041 -232190041 -232190041 -232190041 2075478837 2075478837 2075478837 2075478837 -1168265900 -1168265900 581989062 581989062 178482033 178482033 178482033 178482033 1354395138 1354395138 -1530408968 -1530408968 -414767254 -414767254 1970368353 1970368353 1970368353 1970368353 -1967815281 -1967815281 -1967815281 -1967815281 941660988 941660988 1786883066 1786883066 670291604 670291604 -1803607012 -1803607012 1829132124 1829132124 -432502583 -432502583 -432502583 -432502583 -1642734171 -1642734171 -1642734171 -1642734171 -425048532 -425048532 2097663454 2097663454 -1938999974 -1938999974 -1802192500 -1802192500 2056892401 2056892401 2056892401 2056892401 -917350225 -917350225 -917350225 -917350225 -55935255 -55935255 -55935255 -55935255 -418860175 -418860175 -418860175 -418860175 -2146202839 -2146202839 -2146202839 -2146202839 310524955 310524955 310524955 310524955 159865104 159865104 -265464733 -265464733 -265464733 -265464733 -1996442747 -1996442747 -1996442747 -1996442747 430136711 430136711 430136711 430136711 -743509129 -743509129 -743509129 -743509129 167237906 167237906 0 0 152 0 0 0 -938475945 -938475945 -938475945 -938475945 -1694006096 -1694006096 -1785808236 -1785808236 1021729225 1021729225 1021729225 1021729225 1832705803 1832705803 1832705803 1832705803 581989062 581989062 1354395138 1354395138 2097663454 2097663454 -743509129 -743509129 -743509129 -743509129 -1168265900 -1168265900 -414767254 -414767254 -1039351567 -1039351567 -1039351567 -1039351567 167237906 167237906 177811234 177811234 -364116164 -364116164 -1933552094 -1933552094 259868705 259868705 259868705 259868705 -501526237 -501526237 -501526237 -501526237 776215953 776215953 776215953 776215953 1630722604 1630722604 310524955 310524955 310524955 310524955 473010817 473010817 473010817 473010817 1970368353 1970368353 1970368353 1970368353 647803737 647803737 647803737 647803737 -1252588227 -1252588227 -1252588227 -1252588227 669358715 669358715 669358715 669358715 2075478837 2075478837 2075478837 2075478837 -1995826660 -1995826660 109292002 109292002 1421489007 1421489007 1421489007 1421489007 287343763 287343763 287343763 287343763 -1108026676 -1108026676 1829132124 1829132124 -1546216506 -1546216506 941660988 941660988 -305386173 -305386173 -305386173 -305386173 -815473344 -815473344 -1877186230 -1877186230 601527218 601527218 -38527737 -38527737 -38527737 -38527737 -1068590402 -1068590402 1568788209 1568788209 1568788209 1568788209 1198739057 1198739057 1198739057 1198739057 2138619156 2138619156 -218590163 -218590163 -218590163 -218590163 -1469084794 -1469084794 -493829536 -493829536 -232190041 -232190041 -232190041 -232190041 -1674340339 -1674340339 -1674340339 -1674340339 1775667486 1775667486 -948676228 -948676228 -1338732474 -1338732474 178482033 178482033 178482033 178482033 918842470 918842470 -917350225 -917350225 -917350225 -917350225 390937317 390937317 390937317 390937317 -418860175 -418860175 -418860175 -418860175 670291604 670291604 1859681623 1859681623 1859681623 1859681623 1241175627 1241175627 1241175627 1241175627 -487119163 -487119163 -487119163 -487119163 1315739433 1315739433 1315739433 1315739433 -1938999974 -1938999974 1786883066 1786883066 -55935255 -55935255 -55935255 -55935255 -2146202839 -2146202839 -2146202839 -2146202839 -1866983349 -1866983349 -1866983349 -1866983349 607596425 607596425 607596425 607596425 -425048532 -425048532 -893024018 -893024018 -1873731147 -1873731147 -1873731147 -1873731147 159865104 159865104 411876340 411876340 2056892401 2056892401 2056892401 2056892401 -1642734171 -1642734171 -1642734171 -1642734171 -1996442747 -1996442747 -1996442747 -1996442747 257760945 257760945 257760945 257760945 -1631204972 -1631204972 -1802192500 -1802192500 -432548865 -432548865 -432548865 -432548865 -551129560 -551129560 -1319261042 -1319261042 -859679032 -859679032 -1510933233 -1510933233 -1510933233 -1510933233 286273879 286273879 286273879 286273879 1481537722 1481537722 258343568 258343568 -265464733 -265464733 -265464733 -265464733 -432502583 -432502583 -432502583 -432502583 -1967815281 -1967815281 -1967815281 -1967815281 -1530408968 -1530408968 967560929 967560929 967560929 967560929 -1426106865 -1426106865 -1426106865 -1426106865 190104374 190104374 430136711 430136711 430136711 430136711 -1803607012 -1803607012 -1520512970 -1520512970 5018725 5018725 5018725 5018725 183526573 183526573 183526573 183526573 -1040862600 -1040862600 diff --git a/test/legacy_archives/multimap_int_100.xml b/test/legacy_archives/multimap_int_100.xml new file mode 100644 index 00000000..10d803b2 --- /dev/null +++ b/test/legacy_archives/multimap_int_100.xml @@ -0,0 +1,1230 @@ + + + + + 152 + 193 + 0 + + 1775667486 + 1775667486 + + + -948676228 + -948676228 + + + -1108026676 + -1108026676 + + + -1866983349 + -1866983349 + + + -1866983349 + -1866983349 + + + 258343568 + 258343568 + + + -1068590402 + -1068590402 + + + -432548865 + -432548865 + + + -432548865 + -432548865 + + + 177811234 + 177811234 + + + 5018725 + 5018725 + + + 5018725 + 5018725 + + + 190104374 + 190104374 + + + 1315739433 + 1315739433 + + + 1315739433 + 1315739433 + + + -1995826660 + -1995826660 + + + -305386173 + -305386173 + + + -305386173 + -305386173 + + + 287343763 + 287343763 + + + 287343763 + 287343763 + + + 1241175627 + 1241175627 + + + 1241175627 + 1241175627 + + + 109292002 + 109292002 + + + 1021729225 + 1021729225 + + + 1021729225 + 1021729225 + + + -1426106865 + -1426106865 + + + -1426106865 + -1426106865 + + + 918842470 + 918842470 + + + -1338732474 + -1338732474 + + + 669358715 + 669358715 + + + 669358715 + 669358715 + + + 183526573 + 183526573 + + + 183526573 + 183526573 + + + -938475945 + -938475945 + + + -938475945 + -938475945 + + + -1694006096 + -1694006096 + + + 1630722604 + 1630722604 + + + -1933552094 + -1933552094 + + + 257760945 + 257760945 + + + 257760945 + 257760945 + + + -1510933233 + -1510933233 + + + -1510933233 + -1510933233 + + + 390937317 + 390937317 + + + 390937317 + 390937317 + + + 259868705 + 259868705 + + + 259868705 + 259868705 + + + -38527737 + -38527737 + + + -38527737 + -38527737 + + + -551129560 + -551129560 + + + 1832705803 + 1832705803 + + + 1832705803 + 1832705803 + + + 607596425 + 607596425 + + + 607596425 + 607596425 + + + -1520512970 + -1520512970 + + + -1674340339 + -1674340339 + + + -1674340339 + -1674340339 + + + -1873731147 + -1873731147 + + + -1873731147 + -1873731147 + + + 1421489007 + 1421489007 + + + 1421489007 + 1421489007 + + + -501526237 + -501526237 + + + -501526237 + -501526237 + + + -1877186230 + -1877186230 + + + -218590163 + -218590163 + + + -218590163 + -218590163 + + + 647803737 + 647803737 + + + 647803737 + 647803737 + + + -859679032 + -859679032 + + + 967560929 + 967560929 + + + 967560929 + 967560929 + + + -815473344 + -815473344 + + + -487119163 + -487119163 + + + -487119163 + -487119163 + + + -1546216506 + -1546216506 + + + 1859681623 + 1859681623 + + + 1859681623 + 1859681623 + + + -1040862600 + -1040862600 + + + -893024018 + -893024018 + + + -1319261042 + -1319261042 + + + -1252588227 + -1252588227 + + + -1252588227 + -1252588227 + + + -1785808236 + -1785808236 + + + 1198739057 + 1198739057 + + + 1198739057 + 1198739057 + + + -1469084794 + -1469084794 + + + 473010817 + 473010817 + + + 473010817 + 473010817 + + + 1481537722 + 1481537722 + + + 2138619156 + 2138619156 + + + -1039351567 + -1039351567 + + + -1039351567 + -1039351567 + + + -493829536 + -493829536 + + + 411876340 + 411876340 + + + -364116164 + -364116164 + + + 776215953 + 776215953 + + + 776215953 + 776215953 + + + 1568788209 + 1568788209 + + + 1568788209 + 1568788209 + + + -1631204972 + -1631204972 + + + 601527218 + 601527218 + + + 286273879 + 286273879 + + + 286273879 + 286273879 + + + -232190041 + -232190041 + + + -232190041 + -232190041 + + + 2075478837 + 2075478837 + + + 2075478837 + 2075478837 + + + -1168265900 + -1168265900 + + + 581989062 + 581989062 + + + 178482033 + 178482033 + + + 178482033 + 178482033 + + + 1354395138 + 1354395138 + + + -1530408968 + -1530408968 + + + -414767254 + -414767254 + + + 1970368353 + 1970368353 + + + 1970368353 + 1970368353 + + + -1967815281 + -1967815281 + + + -1967815281 + -1967815281 + + + 941660988 + 941660988 + + + 1786883066 + 1786883066 + + + 670291604 + 670291604 + + + -1803607012 + -1803607012 + + + 1829132124 + 1829132124 + + + -432502583 + -432502583 + + + -432502583 + -432502583 + + + -1642734171 + -1642734171 + + + -1642734171 + -1642734171 + + + -425048532 + -425048532 + + + 2097663454 + 2097663454 + + + -1938999974 + -1938999974 + + + -1802192500 + -1802192500 + + + 2056892401 + 2056892401 + + + 2056892401 + 2056892401 + + + -917350225 + -917350225 + + + -917350225 + -917350225 + + + -55935255 + -55935255 + + + -55935255 + -55935255 + + + -418860175 + -418860175 + + + -418860175 + -418860175 + + + -2146202839 + -2146202839 + + + -2146202839 + -2146202839 + + + 310524955 + 310524955 + + + 310524955 + 310524955 + + + 159865104 + 159865104 + + + -265464733 + -265464733 + + + -265464733 + -265464733 + + + -1996442747 + -1996442747 + + + -1996442747 + -1996442747 + + + 430136711 + 430136711 + + + 430136711 + 430136711 + + + -743509129 + -743509129 + + + -743509129 + -743509129 + + + 167237906 + 167237906 + + + + 152 + 0 + + -938475945 + -938475945 + + + -938475945 + -938475945 + + + -1694006096 + -1694006096 + + + -1785808236 + -1785808236 + + + 1021729225 + 1021729225 + + + 1021729225 + 1021729225 + + + 1832705803 + 1832705803 + + + 1832705803 + 1832705803 + + + 581989062 + 581989062 + + + 1354395138 + 1354395138 + + + 2097663454 + 2097663454 + + + -743509129 + -743509129 + + + -743509129 + -743509129 + + + -1168265900 + -1168265900 + + + -414767254 + -414767254 + + + -1039351567 + -1039351567 + + + -1039351567 + -1039351567 + + + 167237906 + 167237906 + + + 177811234 + 177811234 + + + -364116164 + -364116164 + + + -1933552094 + -1933552094 + + + 259868705 + 259868705 + + + 259868705 + 259868705 + + + -501526237 + -501526237 + + + -501526237 + -501526237 + + + 776215953 + 776215953 + + + 776215953 + 776215953 + + + 1630722604 + 1630722604 + + + 310524955 + 310524955 + + + 310524955 + 310524955 + + + 473010817 + 473010817 + + + 473010817 + 473010817 + + + 1970368353 + 1970368353 + + + 1970368353 + 1970368353 + + + 647803737 + 647803737 + + + 647803737 + 647803737 + + + -1252588227 + -1252588227 + + + -1252588227 + -1252588227 + + + 669358715 + 669358715 + + + 669358715 + 669358715 + + + 2075478837 + 2075478837 + + + 2075478837 + 2075478837 + + + -1995826660 + -1995826660 + + + 109292002 + 109292002 + + + 1421489007 + 1421489007 + + + 1421489007 + 1421489007 + + + 287343763 + 287343763 + + + 287343763 + 287343763 + + + -1108026676 + -1108026676 + + + 1829132124 + 1829132124 + + + -1546216506 + -1546216506 + + + 941660988 + 941660988 + + + -305386173 + -305386173 + + + -305386173 + -305386173 + + + -815473344 + -815473344 + + + -1877186230 + -1877186230 + + + 601527218 + 601527218 + + + -38527737 + -38527737 + + + -38527737 + -38527737 + + + -1068590402 + -1068590402 + + + 1568788209 + 1568788209 + + + 1568788209 + 1568788209 + + + 1198739057 + 1198739057 + + + 1198739057 + 1198739057 + + + 2138619156 + 2138619156 + + + -218590163 + -218590163 + + + -218590163 + -218590163 + + + -1469084794 + -1469084794 + + + -493829536 + -493829536 + + + -232190041 + -232190041 + + + -232190041 + -232190041 + + + -1674340339 + -1674340339 + + + -1674340339 + -1674340339 + + + 1775667486 + 1775667486 + + + -948676228 + -948676228 + + + -1338732474 + -1338732474 + + + 178482033 + 178482033 + + + 178482033 + 178482033 + + + 918842470 + 918842470 + + + -917350225 + -917350225 + + + -917350225 + -917350225 + + + 390937317 + 390937317 + + + 390937317 + 390937317 + + + -418860175 + -418860175 + + + -418860175 + -418860175 + + + 670291604 + 670291604 + + + 1859681623 + 1859681623 + + + 1859681623 + 1859681623 + + + 1241175627 + 1241175627 + + + 1241175627 + 1241175627 + + + -487119163 + -487119163 + + + -487119163 + -487119163 + + + 1315739433 + 1315739433 + + + 1315739433 + 1315739433 + + + -1938999974 + -1938999974 + + + 1786883066 + 1786883066 + + + -55935255 + -55935255 + + + -55935255 + -55935255 + + + -2146202839 + -2146202839 + + + -2146202839 + -2146202839 + + + -1866983349 + -1866983349 + + + -1866983349 + -1866983349 + + + 607596425 + 607596425 + + + 607596425 + 607596425 + + + -425048532 + -425048532 + + + -893024018 + -893024018 + + + -1873731147 + -1873731147 + + + -1873731147 + -1873731147 + + + 159865104 + 159865104 + + + 411876340 + 411876340 + + + 2056892401 + 2056892401 + + + 2056892401 + 2056892401 + + + -1642734171 + -1642734171 + + + -1642734171 + -1642734171 + + + -1996442747 + -1996442747 + + + -1996442747 + -1996442747 + + + 257760945 + 257760945 + + + 257760945 + 257760945 + + + -1631204972 + -1631204972 + + + -1802192500 + -1802192500 + + + -432548865 + -432548865 + + + -432548865 + -432548865 + + + -551129560 + -551129560 + + + -1319261042 + -1319261042 + + + -859679032 + -859679032 + + + -1510933233 + -1510933233 + + + -1510933233 + -1510933233 + + + 286273879 + 286273879 + + + 286273879 + 286273879 + + + 1481537722 + 1481537722 + + + 258343568 + 258343568 + + + -265464733 + -265464733 + + + -265464733 + -265464733 + + + -432502583 + -432502583 + + + -432502583 + -432502583 + + + -1967815281 + -1967815281 + + + -1967815281 + -1967815281 + + + -1530408968 + -1530408968 + + + 967560929 + 967560929 + + + 967560929 + 967560929 + + + -1426106865 + -1426106865 + + + -1426106865 + -1426106865 + + + 190104374 + 190104374 + + + 430136711 + 430136711 + + + 430136711 + 430136711 + + + -1803607012 + -1803607012 + + + -1520512970 + -1520512970 + + + 5018725 + 5018725 + + + 5018725 + 5018725 + + + 183526573 + 183526573 + + + 183526573 + 183526573 + + + -1040862600 + -1040862600 + + + + diff --git a/test/legacy_archives/multimap_string_0.txt b/test/legacy_archives/multimap_string_0.txt new file mode 100644 index 00000000..0c851da6 --- /dev/null +++ b/test/legacy_archives/multimap_string_0.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 0 0 0 0 0 0 0 diff --git a/test/legacy_archives/multimap_string_0.xml b/test/legacy_archives/multimap_string_0.xml new file mode 100644 index 00000000..059687d4 --- /dev/null +++ b/test/legacy_archives/multimap_string_0.xml @@ -0,0 +1,14 @@ + + + + + 0 + 0 + 0 + + + 0 + 0 + + + diff --git a/test/legacy_archives/multimap_string_10.txt b/test/legacy_archives/multimap_string_10.txt new file mode 100644 index 00000000..22b96f00 --- /dev/null +++ b/test/legacy_archives/multimap_string_10.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 14 29 0 0 0 10 3551458167 10 3551458167 10 3551458167 10 3551458167 10 2600961200 10 2600961200 10 3126701396 10 3126701396 9 581989062 9 581989062 10 1832705803 10 1832705803 10 1832705803 10 1832705803 10 3356491351 10 3356491351 10 3356491351 10 3356491351 10 1021729225 10 1021729225 10 1021729225 10 1021729225 10 2097663454 10 2097663454 10 1354395138 10 1354395138 10 2509159060 10 2509159060 0 0 14 0 0 0 10 3356491351 10 3356491351 10 3356491351 10 3356491351 10 2600961200 10 2600961200 10 2509159060 10 2509159060 10 1021729225 10 1021729225 10 1021729225 10 1021729225 10 1832705803 10 1832705803 10 1832705803 10 1832705803 9 581989062 9 581989062 10 1354395138 10 1354395138 10 2097663454 10 2097663454 10 3551458167 10 3551458167 10 3551458167 10 3551458167 10 3126701396 10 3126701396 diff --git a/test/legacy_archives/multimap_string_10.xml b/test/legacy_archives/multimap_string_10.xml new file mode 100644 index 00000000..abc3bcd8 --- /dev/null +++ b/test/legacy_archives/multimap_string_10.xml @@ -0,0 +1,126 @@ + + + + + 14 + 29 + 0 + + 3551458167 + 3551458167 + + + 3551458167 + 3551458167 + + + 2600961200 + 2600961200 + + + 3126701396 + 3126701396 + + + 581989062 + 581989062 + + + 1832705803 + 1832705803 + + + 1832705803 + 1832705803 + + + 3356491351 + 3356491351 + + + 3356491351 + 3356491351 + + + 1021729225 + 1021729225 + + + 1021729225 + 1021729225 + + + 2097663454 + 2097663454 + + + 1354395138 + 1354395138 + + + 2509159060 + 2509159060 + + + + 14 + 0 + + 3356491351 + 3356491351 + + + 3356491351 + 3356491351 + + + 2600961200 + 2600961200 + + + 2509159060 + 2509159060 + + + 1021729225 + 1021729225 + + + 1021729225 + 1021729225 + + + 1832705803 + 1832705803 + + + 1832705803 + 1832705803 + + + 581989062 + 581989062 + + + 1354395138 + 1354395138 + + + 2097663454 + 2097663454 + + + 3551458167 + 3551458167 + + + 3551458167 + 3551458167 + + + 3126701396 + 3126701396 + + + + diff --git a/test/legacy_archives/multimap_string_100.txt b/test/legacy_archives/multimap_string_100.txt new file mode 100644 index 00000000..bb48c6ca --- /dev/null +++ b/test/legacy_archives/multimap_string_100.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 152 193 0 0 0 9 178482033 9 178482033 9 178482033 9 178482033 10 1786883066 10 1786883066 9 286273879 9 286273879 9 286273879 9 286273879 10 2298524549 10 2298524549 10 2298524549 10 2298524549 9 259868705 9 259868705 9 259868705 9 259868705 9 601527218 9 601527218 9 411876340 9 411876340 10 4029502563 10 4029502563 10 4029502563 10 4029502563 9 109292002 9 109292002 9 941660988 9 941660988 10 4256439559 10 4256439559 10 4256439559 10 4256439559 10 3401943278 10 3401943278 10 2663762324 10 2663762324 10 3042379069 10 3042379069 10 3042379069 10 3042379069 10 2509159060 10 2509159060 10 1859681623 10 1859681623 10 1859681623 10 1859681623 10 3356491351 10 3356491351 10 3356491351 10 3356491351 10 2620626957 10 2620626957 10 2620626957 10 2620626957 10 2652233125 10 2652233125 10 2652233125 10 2652233125 9 607596425 9 607596425 9 607596425 9 607596425 10 1568788209 10 1568788209 10 1568788209 10 1568788209 10 2868860431 10 2868860431 10 2868860431 10 2868860431 9 670291604 9 670291604 10 2764558328 10 2764558328 10 3226376894 10 3226376894 10 3930851132 10 3930851132 10 3801137760 10 3801137760 9 287343763 9 287343763 9 287343763 9 287343763 10 2138619156 10 2138619156 9 967560929 9 967560929 9 967560929 9 967560929 9 257760945 9 257760945 9 257760945 9 257760945 10 2056892401 10 2056892401 10 2056892401 10 2056892401 10 1829132124 10 1829132124 10 3807848133 10 3807848133 10 3807848133 10 3807848133 9 190104374 9 190104374 9 310524955 9 310524955 9 310524955 9 310524955 10 1481537722 10 1481537722 10 2361415202 10 2361415202 10 1970368353 10 1970368353 10 1970368353 10 1970368353 10 2417781066 10 2417781066 10 3186940620 10 3186940620 10 1421489007 10 1421489007 10 1421489007 10 1421489007 9 776215953 9 776215953 9 776215953 9 776215953 10 1775667486 10 1775667486 9 159865104 9 159865104 10 2355967322 10 2355967322 10 2748750790 10 2748750790 10 1832705803 10 1832705803 10 1832705803 10 1832705803 10 4239032041 10 4239032041 10 4239032041 10 4239032041 10 3876107121 10 3876107121 10 3876107121 10 3876107121 10 3479493952 10 3479493952 10 2600961200 10 2600961200 10 1241175627 10 1241175627 10 1241175627 10 1241175627 9 258343568 9 258343568 10 1630722604 10 1630722604 10 3255615729 10 3255615729 10 3255615729 10 3255615729 7 5018725 7 5018725 7 5018725 7 5018725 10 2774454326 10 2774454326 10 2825882502 10 2825882502 9 581989062 9 581989062 10 2148764457 10 2148764457 10 2148764457 10 2148764457 10 3862464713 10 3862464713 10 3862464713 10 3862464713 10 3862418431 10 3862418431 10 3862418431 10 3862418431 9 918842470 9 918842470 9 183526573 9 183526573 9 183526573 9 183526573 10 2097663454 10 2097663454 10 3377617071 10 3377617071 10 3377617071 10 3377617071 9 167237906 9 167237906 10 2492774796 10 2492774796 10 3254104696 10 3254104696 10 3551458167 10 3551458167 10 3551458167 10 3551458167 10 3989581123 10 3989581123 10 3989581123 10 3989581123 9 430136711 9 430136711 9 430136711 9 430136711 10 2427983947 10 2427983947 10 2427983947 10 2427983947 10 2975706254 10 2975706254 10 1198739057 10 1198739057 10 1198739057 10 1198739057 9 473010817 9 473010817 9 473010817 9 473010817 10 2075478837 10 2075478837 10 2075478837 10 2075478837 10 2956234822 10 2956234822 10 3435288264 10 3435288264 10 2491360284 10 2491360284 10 4076377133 10 4076377133 10 4076377133 10 4076377133 10 3869918764 10 3869918764 9 647803737 9 647803737 9 647803737 9 647803737 9 669358715 9 669358715 9 669358715 9 669358715 9 177811234 9 177811234 10 1021729225 10 1021729225 10 1021729225 10 1021729225 10 2327152015 10 2327152015 10 2327152015 10 2327152015 10 3793441059 10 3793441059 10 3793441059 10 3793441059 9 390937317 9 390937317 9 390937317 9 390937317 10 2421236149 10 2421236149 10 2421236149 10 2421236149 10 3346291068 10 3346291068 10 3880200042 10 3880200042 10 2299140636 10 2299140636 10 3743837736 10 3743837736 10 2784034063 10 2784034063 10 2784034063 10 2784034063 10 1315739433 10 1315739433 10 1315739433 10 1315739433 10 1354395138 10 1354395138 10 4062777255 10 4062777255 10 4062777255 10 4062777255 10 3126701396 10 3126701396 0 0 152 0 0 0 10 3356491351 10 3356491351 10 3356491351 10 3356491351 10 2600961200 10 2600961200 10 2509159060 10 2509159060 10 1021729225 10 1021729225 10 1021729225 10 1021729225 10 1832705803 10 1832705803 10 1832705803 10 1832705803 9 581989062 9 581989062 10 1354395138 10 1354395138 10 2097663454 10 2097663454 10 3551458167 10 3551458167 10 3551458167 10 3551458167 10 3126701396 10 3126701396 10 3880200042 10 3880200042 10 3255615729 10 3255615729 10 3255615729 10 3255615729 9 167237906 9 167237906 9 177811234 9 177811234 10 3930851132 10 3930851132 10 2361415202 10 2361415202 9 259868705 9 259868705 9 259868705 9 259868705 10 3793441059 10 3793441059 10 3793441059 10 3793441059 9 776215953 9 776215953 9 776215953 9 776215953 10 1630722604 10 1630722604 9 310524955 9 310524955 9 310524955 9 310524955 9 473010817 9 473010817 9 473010817 9 473010817 10 1970368353 10 1970368353 10 1970368353 10 1970368353 9 647803737 9 647803737 9 647803737 9 647803737 10 3042379069 10 3042379069 10 3042379069 10 3042379069 9 669358715 9 669358715 9 669358715 9 669358715 10 2075478837 10 2075478837 10 2075478837 10 2075478837 10 2299140636 10 2299140636 9 109292002 9 109292002 10 1421489007 10 1421489007 10 1421489007 10 1421489007 9 287343763 9 287343763 9 287343763 9 287343763 10 3186940620 10 3186940620 10 1829132124 10 1829132124 10 2748750790 10 2748750790 9 941660988 9 941660988 10 3989581123 10 3989581123 10 3989581123 10 3989581123 10 3479493952 10 3479493952 10 2417781066 10 2417781066 9 601527218 9 601527218 10 4256439559 10 4256439559 10 4256439559 10 4256439559 10 3226376894 10 3226376894 10 1568788209 10 1568788209 10 1568788209 10 1568788209 10 1198739057 10 1198739057 10 1198739057 10 1198739057 10 2138619156 10 2138619156 10 4076377133 10 4076377133 10 4076377133 10 4076377133 10 2825882502 10 2825882502 10 3801137760 10 3801137760 10 4062777255 10 4062777255 10 4062777255 10 4062777255 10 2620626957 10 2620626957 10 2620626957 10 2620626957 10 1775667486 10 1775667486 10 3346291068 10 3346291068 10 2956234822 10 2956234822 9 178482033 9 178482033 9 178482033 9 178482033 9 918842470 9 918842470 10 3377617071 10 3377617071 10 3377617071 10 3377617071 9 390937317 9 390937317 9 390937317 9 390937317 10 3876107121 10 3876107121 10 3876107121 10 3876107121 9 670291604 9 670291604 10 1859681623 10 1859681623 10 1859681623 10 1859681623 10 1241175627 10 1241175627 10 1241175627 10 1241175627 10 3807848133 10 3807848133 10 3807848133 10 3807848133 10 1315739433 10 1315739433 10 1315739433 10 1315739433 10 2355967322 10 2355967322 10 1786883066 10 1786883066 10 4239032041 10 4239032041 10 4239032041 10 4239032041 10 2148764457 10 2148764457 10 2148764457 10 2148764457 10 2427983947 10 2427983947 10 2427983947 10 2427983947 9 607596425 9 607596425 9 607596425 9 607596425 10 3869918764 10 3869918764 10 3401943278 10 3401943278 10 2421236149 10 2421236149 10 2421236149 10 2421236149 9 159865104 9 159865104 9 411876340 9 411876340 10 2056892401 10 2056892401 10 2056892401 10 2056892401 10 2652233125 10 2652233125 10 2652233125 10 2652233125 10 2298524549 10 2298524549 10 2298524549 10 2298524549 9 257760945 9 257760945 9 257760945 9 257760945 10 2663762324 10 2663762324 10 2492774796 10 2492774796 10 3862418431 10 3862418431 10 3862418431 10 3862418431 10 3743837736 10 3743837736 10 2975706254 10 2975706254 10 3435288264 10 3435288264 10 2784034063 10 2784034063 10 2784034063 10 2784034063 9 286273879 9 286273879 9 286273879 9 286273879 10 1481537722 10 1481537722 9 258343568 9 258343568 10 4029502563 10 4029502563 10 4029502563 10 4029502563 10 3862464713 10 3862464713 10 3862464713 10 3862464713 10 2327152015 10 2327152015 10 2327152015 10 2327152015 10 2764558328 10 2764558328 9 967560929 9 967560929 9 967560929 9 967560929 10 2868860431 10 2868860431 10 2868860431 10 2868860431 9 190104374 9 190104374 9 430136711 9 430136711 9 430136711 9 430136711 10 2491360284 10 2491360284 10 2774454326 10 2774454326 7 5018725 7 5018725 7 5018725 7 5018725 9 183526573 9 183526573 9 183526573 9 183526573 10 3254104696 10 3254104696 diff --git a/test/legacy_archives/multimap_string_100.xml b/test/legacy_archives/multimap_string_100.xml new file mode 100644 index 00000000..35edaeec --- /dev/null +++ b/test/legacy_archives/multimap_string_100.xml @@ -0,0 +1,1230 @@ + + + + + 152 + 193 + 0 + + 178482033 + 178482033 + + + 178482033 + 178482033 + + + 1786883066 + 1786883066 + + + 286273879 + 286273879 + + + 286273879 + 286273879 + + + 2298524549 + 2298524549 + + + 2298524549 + 2298524549 + + + 259868705 + 259868705 + + + 259868705 + 259868705 + + + 601527218 + 601527218 + + + 411876340 + 411876340 + + + 4029502563 + 4029502563 + + + 4029502563 + 4029502563 + + + 109292002 + 109292002 + + + 941660988 + 941660988 + + + 4256439559 + 4256439559 + + + 4256439559 + 4256439559 + + + 3401943278 + 3401943278 + + + 2663762324 + 2663762324 + + + 3042379069 + 3042379069 + + + 3042379069 + 3042379069 + + + 2509159060 + 2509159060 + + + 1859681623 + 1859681623 + + + 1859681623 + 1859681623 + + + 3356491351 + 3356491351 + + + 3356491351 + 3356491351 + + + 2620626957 + 2620626957 + + + 2620626957 + 2620626957 + + + 2652233125 + 2652233125 + + + 2652233125 + 2652233125 + + + 607596425 + 607596425 + + + 607596425 + 607596425 + + + 1568788209 + 1568788209 + + + 1568788209 + 1568788209 + + + 2868860431 + 2868860431 + + + 2868860431 + 2868860431 + + + 670291604 + 670291604 + + + 2764558328 + 2764558328 + + + 3226376894 + 3226376894 + + + 3930851132 + 3930851132 + + + 3801137760 + 3801137760 + + + 287343763 + 287343763 + + + 287343763 + 287343763 + + + 2138619156 + 2138619156 + + + 967560929 + 967560929 + + + 967560929 + 967560929 + + + 257760945 + 257760945 + + + 257760945 + 257760945 + + + 2056892401 + 2056892401 + + + 2056892401 + 2056892401 + + + 1829132124 + 1829132124 + + + 3807848133 + 3807848133 + + + 3807848133 + 3807848133 + + + 190104374 + 190104374 + + + 310524955 + 310524955 + + + 310524955 + 310524955 + + + 1481537722 + 1481537722 + + + 2361415202 + 2361415202 + + + 1970368353 + 1970368353 + + + 1970368353 + 1970368353 + + + 2417781066 + 2417781066 + + + 3186940620 + 3186940620 + + + 1421489007 + 1421489007 + + + 1421489007 + 1421489007 + + + 776215953 + 776215953 + + + 776215953 + 776215953 + + + 1775667486 + 1775667486 + + + 159865104 + 159865104 + + + 2355967322 + 2355967322 + + + 2748750790 + 2748750790 + + + 1832705803 + 1832705803 + + + 1832705803 + 1832705803 + + + 4239032041 + 4239032041 + + + 4239032041 + 4239032041 + + + 3876107121 + 3876107121 + + + 3876107121 + 3876107121 + + + 3479493952 + 3479493952 + + + 2600961200 + 2600961200 + + + 1241175627 + 1241175627 + + + 1241175627 + 1241175627 + + + 258343568 + 258343568 + + + 1630722604 + 1630722604 + + + 3255615729 + 3255615729 + + + 3255615729 + 3255615729 + + + 5018725 + 5018725 + + + 5018725 + 5018725 + + + 2774454326 + 2774454326 + + + 2825882502 + 2825882502 + + + 581989062 + 581989062 + + + 2148764457 + 2148764457 + + + 2148764457 + 2148764457 + + + 3862464713 + 3862464713 + + + 3862464713 + 3862464713 + + + 3862418431 + 3862418431 + + + 3862418431 + 3862418431 + + + 918842470 + 918842470 + + + 183526573 + 183526573 + + + 183526573 + 183526573 + + + 2097663454 + 2097663454 + + + 3377617071 + 3377617071 + + + 3377617071 + 3377617071 + + + 167237906 + 167237906 + + + 2492774796 + 2492774796 + + + 3254104696 + 3254104696 + + + 3551458167 + 3551458167 + + + 3551458167 + 3551458167 + + + 3989581123 + 3989581123 + + + 3989581123 + 3989581123 + + + 430136711 + 430136711 + + + 430136711 + 430136711 + + + 2427983947 + 2427983947 + + + 2427983947 + 2427983947 + + + 2975706254 + 2975706254 + + + 1198739057 + 1198739057 + + + 1198739057 + 1198739057 + + + 473010817 + 473010817 + + + 473010817 + 473010817 + + + 2075478837 + 2075478837 + + + 2075478837 + 2075478837 + + + 2956234822 + 2956234822 + + + 3435288264 + 3435288264 + + + 2491360284 + 2491360284 + + + 4076377133 + 4076377133 + + + 4076377133 + 4076377133 + + + 3869918764 + 3869918764 + + + 647803737 + 647803737 + + + 647803737 + 647803737 + + + 669358715 + 669358715 + + + 669358715 + 669358715 + + + 177811234 + 177811234 + + + 1021729225 + 1021729225 + + + 1021729225 + 1021729225 + + + 2327152015 + 2327152015 + + + 2327152015 + 2327152015 + + + 3793441059 + 3793441059 + + + 3793441059 + 3793441059 + + + 390937317 + 390937317 + + + 390937317 + 390937317 + + + 2421236149 + 2421236149 + + + 2421236149 + 2421236149 + + + 3346291068 + 3346291068 + + + 3880200042 + 3880200042 + + + 2299140636 + 2299140636 + + + 3743837736 + 3743837736 + + + 2784034063 + 2784034063 + + + 2784034063 + 2784034063 + + + 1315739433 + 1315739433 + + + 1315739433 + 1315739433 + + + 1354395138 + 1354395138 + + + 4062777255 + 4062777255 + + + 4062777255 + 4062777255 + + + 3126701396 + 3126701396 + + + + 152 + 0 + + 3356491351 + 3356491351 + + + 3356491351 + 3356491351 + + + 2600961200 + 2600961200 + + + 2509159060 + 2509159060 + + + 1021729225 + 1021729225 + + + 1021729225 + 1021729225 + + + 1832705803 + 1832705803 + + + 1832705803 + 1832705803 + + + 581989062 + 581989062 + + + 1354395138 + 1354395138 + + + 2097663454 + 2097663454 + + + 3551458167 + 3551458167 + + + 3551458167 + 3551458167 + + + 3126701396 + 3126701396 + + + 3880200042 + 3880200042 + + + 3255615729 + 3255615729 + + + 3255615729 + 3255615729 + + + 167237906 + 167237906 + + + 177811234 + 177811234 + + + 3930851132 + 3930851132 + + + 2361415202 + 2361415202 + + + 259868705 + 259868705 + + + 259868705 + 259868705 + + + 3793441059 + 3793441059 + + + 3793441059 + 3793441059 + + + 776215953 + 776215953 + + + 776215953 + 776215953 + + + 1630722604 + 1630722604 + + + 310524955 + 310524955 + + + 310524955 + 310524955 + + + 473010817 + 473010817 + + + 473010817 + 473010817 + + + 1970368353 + 1970368353 + + + 1970368353 + 1970368353 + + + 647803737 + 647803737 + + + 647803737 + 647803737 + + + 3042379069 + 3042379069 + + + 3042379069 + 3042379069 + + + 669358715 + 669358715 + + + 669358715 + 669358715 + + + 2075478837 + 2075478837 + + + 2075478837 + 2075478837 + + + 2299140636 + 2299140636 + + + 109292002 + 109292002 + + + 1421489007 + 1421489007 + + + 1421489007 + 1421489007 + + + 287343763 + 287343763 + + + 287343763 + 287343763 + + + 3186940620 + 3186940620 + + + 1829132124 + 1829132124 + + + 2748750790 + 2748750790 + + + 941660988 + 941660988 + + + 3989581123 + 3989581123 + + + 3989581123 + 3989581123 + + + 3479493952 + 3479493952 + + + 2417781066 + 2417781066 + + + 601527218 + 601527218 + + + 4256439559 + 4256439559 + + + 4256439559 + 4256439559 + + + 3226376894 + 3226376894 + + + 1568788209 + 1568788209 + + + 1568788209 + 1568788209 + + + 1198739057 + 1198739057 + + + 1198739057 + 1198739057 + + + 2138619156 + 2138619156 + + + 4076377133 + 4076377133 + + + 4076377133 + 4076377133 + + + 2825882502 + 2825882502 + + + 3801137760 + 3801137760 + + + 4062777255 + 4062777255 + + + 4062777255 + 4062777255 + + + 2620626957 + 2620626957 + + + 2620626957 + 2620626957 + + + 1775667486 + 1775667486 + + + 3346291068 + 3346291068 + + + 2956234822 + 2956234822 + + + 178482033 + 178482033 + + + 178482033 + 178482033 + + + 918842470 + 918842470 + + + 3377617071 + 3377617071 + + + 3377617071 + 3377617071 + + + 390937317 + 390937317 + + + 390937317 + 390937317 + + + 3876107121 + 3876107121 + + + 3876107121 + 3876107121 + + + 670291604 + 670291604 + + + 1859681623 + 1859681623 + + + 1859681623 + 1859681623 + + + 1241175627 + 1241175627 + + + 1241175627 + 1241175627 + + + 3807848133 + 3807848133 + + + 3807848133 + 3807848133 + + + 1315739433 + 1315739433 + + + 1315739433 + 1315739433 + + + 2355967322 + 2355967322 + + + 1786883066 + 1786883066 + + + 4239032041 + 4239032041 + + + 4239032041 + 4239032041 + + + 2148764457 + 2148764457 + + + 2148764457 + 2148764457 + + + 2427983947 + 2427983947 + + + 2427983947 + 2427983947 + + + 607596425 + 607596425 + + + 607596425 + 607596425 + + + 3869918764 + 3869918764 + + + 3401943278 + 3401943278 + + + 2421236149 + 2421236149 + + + 2421236149 + 2421236149 + + + 159865104 + 159865104 + + + 411876340 + 411876340 + + + 2056892401 + 2056892401 + + + 2056892401 + 2056892401 + + + 2652233125 + 2652233125 + + + 2652233125 + 2652233125 + + + 2298524549 + 2298524549 + + + 2298524549 + 2298524549 + + + 257760945 + 257760945 + + + 257760945 + 257760945 + + + 2663762324 + 2663762324 + + + 2492774796 + 2492774796 + + + 3862418431 + 3862418431 + + + 3862418431 + 3862418431 + + + 3743837736 + 3743837736 + + + 2975706254 + 2975706254 + + + 3435288264 + 3435288264 + + + 2784034063 + 2784034063 + + + 2784034063 + 2784034063 + + + 286273879 + 286273879 + + + 286273879 + 286273879 + + + 1481537722 + 1481537722 + + + 258343568 + 258343568 + + + 4029502563 + 4029502563 + + + 4029502563 + 4029502563 + + + 3862464713 + 3862464713 + + + 3862464713 + 3862464713 + + + 2327152015 + 2327152015 + + + 2327152015 + 2327152015 + + + 2764558328 + 2764558328 + + + 967560929 + 967560929 + + + 967560929 + 967560929 + + + 2868860431 + 2868860431 + + + 2868860431 + 2868860431 + + + 190104374 + 190104374 + + + 430136711 + 430136711 + + + 430136711 + 430136711 + + + 2491360284 + 2491360284 + + + 2774454326 + 2774454326 + + + 5018725 + 5018725 + + + 5018725 + 5018725 + + + 183526573 + 183526573 + + + 183526573 + 183526573 + + + 3254104696 + 3254104696 + + + + diff --git a/test/legacy_archives/multiset_int_0.txt b/test/legacy_archives/multiset_int_0.txt new file mode 100644 index 00000000..0ddbd128 --- /dev/null +++ b/test/legacy_archives/multiset_int_0.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 0 0 0 0 0 diff --git a/test/legacy_archives/multiset_int_0.xml b/test/legacy_archives/multiset_int_0.xml new file mode 100644 index 00000000..6f8e63e7 --- /dev/null +++ b/test/legacy_archives/multiset_int_0.xml @@ -0,0 +1,14 @@ + + + + + 0 + 0 + 0 + + + 0 + 0 + + + diff --git a/test/legacy_archives/multiset_int_10.txt b/test/legacy_archives/multiset_int_10.txt new file mode 100644 index 00000000..2cf7a1a5 --- /dev/null +++ b/test/legacy_archives/multiset_int_10.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 14 29 0 -938475945 -938475945 -1785808236 -1694006096 1021729225 1021729225 581989062 -1168265900 2097663454 1354395138 -743509129 -743509129 1832705803 1832705803 14 0 -938475945 -938475945 -1694006096 -1785808236 1021729225 1021729225 1832705803 1832705803 581989062 1354395138 2097663454 -743509129 -743509129 -1168265900 diff --git a/test/legacy_archives/multiset_int_10.xml b/test/legacy_archives/multiset_int_10.xml new file mode 100644 index 00000000..631f9343 --- /dev/null +++ b/test/legacy_archives/multiset_int_10.xml @@ -0,0 +1,42 @@ + + + + + 14 + 29 + 0 + -938475945 + -938475945 + -1785808236 + -1694006096 + 1021729225 + 1021729225 + 581989062 + -1168265900 + 2097663454 + 1354395138 + -743509129 + -743509129 + 1832705803 + 1832705803 + + + 14 + 0 + -938475945 + -938475945 + -1694006096 + -1785808236 + 1021729225 + 1021729225 + 1832705803 + 1832705803 + 581989062 + 1354395138 + 2097663454 + -743509129 + -743509129 + -1168265900 + + + diff --git a/test/legacy_archives/multiset_int_100.txt b/test/legacy_archives/multiset_int_100.txt new file mode 100644 index 00000000..2b7f67b9 --- /dev/null +++ b/test/legacy_archives/multiset_int_100.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 152 193 0 1775667486 -948676228 -1108026676 -1866983349 -1866983349 258343568 -1068590402 -432548865 -432548865 177811234 5018725 5018725 190104374 1315739433 1315739433 -1995826660 -305386173 -305386173 287343763 287343763 1241175627 1241175627 109292002 1021729225 1021729225 -1426106865 -1426106865 918842470 -1338732474 669358715 669358715 183526573 183526573 -938475945 -938475945 -1694006096 1630722604 -1933552094 257760945 257760945 -1510933233 -1510933233 390937317 390937317 259868705 259868705 -38527737 -38527737 -551129560 1832705803 1832705803 607596425 607596425 -1520512970 -1674340339 -1674340339 -1873731147 -1873731147 1421489007 1421489007 -501526237 -501526237 -1877186230 -218590163 -218590163 647803737 647803737 -859679032 967560929 967560929 -815473344 -487119163 -487119163 -1546216506 1859681623 1859681623 -1040862600 -893024018 -1319261042 -1252588227 -1252588227 -1785808236 1198739057 1198739057 -1469084794 473010817 473010817 1481537722 2138619156 -1039351567 -1039351567 -493829536 411876340 -364116164 776215953 776215953 1568788209 1568788209 -1631204972 601527218 286273879 286273879 -232190041 -232190041 2075478837 2075478837 -1168265900 581989062 178482033 178482033 1354395138 -1530408968 -414767254 1970368353 1970368353 -1967815281 -1967815281 941660988 1786883066 670291604 -1803607012 1829132124 -432502583 -432502583 -1642734171 -1642734171 -425048532 2097663454 -1938999974 -1802192500 2056892401 2056892401 -917350225 -917350225 -55935255 -55935255 -418860175 -418860175 -2146202839 -2146202839 310524955 310524955 159865104 -265464733 -265464733 -1996442747 -1996442747 430136711 430136711 -743509129 -743509129 167237906 152 0 -938475945 -938475945 -1694006096 -1785808236 1021729225 1021729225 1832705803 1832705803 581989062 1354395138 2097663454 -743509129 -743509129 -1168265900 -414767254 -1039351567 -1039351567 167237906 177811234 -364116164 -1933552094 259868705 259868705 -501526237 -501526237 776215953 776215953 1630722604 310524955 310524955 473010817 473010817 1970368353 1970368353 647803737 647803737 -1252588227 -1252588227 669358715 669358715 2075478837 2075478837 -1995826660 109292002 1421489007 1421489007 287343763 287343763 -1108026676 1829132124 -1546216506 941660988 -305386173 -305386173 -815473344 -1877186230 601527218 -38527737 -38527737 -1068590402 1568788209 1568788209 1198739057 1198739057 2138619156 -218590163 -218590163 -1469084794 -493829536 -232190041 -232190041 -1674340339 -1674340339 1775667486 -948676228 -1338732474 178482033 178482033 918842470 -917350225 -917350225 390937317 390937317 -418860175 -418860175 670291604 1859681623 1859681623 1241175627 1241175627 -487119163 -487119163 1315739433 1315739433 -1938999974 1786883066 -55935255 -55935255 -2146202839 -2146202839 -1866983349 -1866983349 607596425 607596425 -425048532 -893024018 -1873731147 -1873731147 159865104 411876340 2056892401 2056892401 -1642734171 -1642734171 -1996442747 -1996442747 257760945 257760945 -1631204972 -1802192500 -432548865 -432548865 -551129560 -1319261042 -859679032 -1510933233 -1510933233 286273879 286273879 1481537722 258343568 -265464733 -265464733 -432502583 -432502583 -1967815281 -1967815281 -1530408968 967560929 967560929 -1426106865 -1426106865 190104374 430136711 430136711 -1803607012 -1520512970 5018725 5018725 183526573 183526573 -1040862600 diff --git a/test/legacy_archives/multiset_int_100.xml b/test/legacy_archives/multiset_int_100.xml new file mode 100644 index 00000000..a9e67076 --- /dev/null +++ b/test/legacy_archives/multiset_int_100.xml @@ -0,0 +1,318 @@ + + + + + 152 + 193 + 0 + 1775667486 + -948676228 + -1108026676 + -1866983349 + -1866983349 + 258343568 + -1068590402 + -432548865 + -432548865 + 177811234 + 5018725 + 5018725 + 190104374 + 1315739433 + 1315739433 + -1995826660 + -305386173 + -305386173 + 287343763 + 287343763 + 1241175627 + 1241175627 + 109292002 + 1021729225 + 1021729225 + -1426106865 + -1426106865 + 918842470 + -1338732474 + 669358715 + 669358715 + 183526573 + 183526573 + -938475945 + -938475945 + -1694006096 + 1630722604 + -1933552094 + 257760945 + 257760945 + -1510933233 + -1510933233 + 390937317 + 390937317 + 259868705 + 259868705 + -38527737 + -38527737 + -551129560 + 1832705803 + 1832705803 + 607596425 + 607596425 + -1520512970 + -1674340339 + -1674340339 + -1873731147 + -1873731147 + 1421489007 + 1421489007 + -501526237 + -501526237 + -1877186230 + -218590163 + -218590163 + 647803737 + 647803737 + -859679032 + 967560929 + 967560929 + -815473344 + -487119163 + -487119163 + -1546216506 + 1859681623 + 1859681623 + -1040862600 + -893024018 + -1319261042 + -1252588227 + -1252588227 + -1785808236 + 1198739057 + 1198739057 + -1469084794 + 473010817 + 473010817 + 1481537722 + 2138619156 + -1039351567 + -1039351567 + -493829536 + 411876340 + -364116164 + 776215953 + 776215953 + 1568788209 + 1568788209 + -1631204972 + 601527218 + 286273879 + 286273879 + -232190041 + -232190041 + 2075478837 + 2075478837 + -1168265900 + 581989062 + 178482033 + 178482033 + 1354395138 + -1530408968 + -414767254 + 1970368353 + 1970368353 + -1967815281 + -1967815281 + 941660988 + 1786883066 + 670291604 + -1803607012 + 1829132124 + -432502583 + -432502583 + -1642734171 + -1642734171 + -425048532 + 2097663454 + -1938999974 + -1802192500 + 2056892401 + 2056892401 + -917350225 + -917350225 + -55935255 + -55935255 + -418860175 + -418860175 + -2146202839 + -2146202839 + 310524955 + 310524955 + 159865104 + -265464733 + -265464733 + -1996442747 + -1996442747 + 430136711 + 430136711 + -743509129 + -743509129 + 167237906 + + + 152 + 0 + -938475945 + -938475945 + -1694006096 + -1785808236 + 1021729225 + 1021729225 + 1832705803 + 1832705803 + 581989062 + 1354395138 + 2097663454 + -743509129 + -743509129 + -1168265900 + -414767254 + -1039351567 + -1039351567 + 167237906 + 177811234 + -364116164 + -1933552094 + 259868705 + 259868705 + -501526237 + -501526237 + 776215953 + 776215953 + 1630722604 + 310524955 + 310524955 + 473010817 + 473010817 + 1970368353 + 1970368353 + 647803737 + 647803737 + -1252588227 + -1252588227 + 669358715 + 669358715 + 2075478837 + 2075478837 + -1995826660 + 109292002 + 1421489007 + 1421489007 + 287343763 + 287343763 + -1108026676 + 1829132124 + -1546216506 + 941660988 + -305386173 + -305386173 + -815473344 + -1877186230 + 601527218 + -38527737 + -38527737 + -1068590402 + 1568788209 + 1568788209 + 1198739057 + 1198739057 + 2138619156 + -218590163 + -218590163 + -1469084794 + -493829536 + -232190041 + -232190041 + -1674340339 + -1674340339 + 1775667486 + -948676228 + -1338732474 + 178482033 + 178482033 + 918842470 + -917350225 + -917350225 + 390937317 + 390937317 + -418860175 + -418860175 + 670291604 + 1859681623 + 1859681623 + 1241175627 + 1241175627 + -487119163 + -487119163 + 1315739433 + 1315739433 + -1938999974 + 1786883066 + -55935255 + -55935255 + -2146202839 + -2146202839 + -1866983349 + -1866983349 + 607596425 + 607596425 + -425048532 + -893024018 + -1873731147 + -1873731147 + 159865104 + 411876340 + 2056892401 + 2056892401 + -1642734171 + -1642734171 + -1996442747 + -1996442747 + 257760945 + 257760945 + -1631204972 + -1802192500 + -432548865 + -432548865 + -551129560 + -1319261042 + -859679032 + -1510933233 + -1510933233 + 286273879 + 286273879 + 1481537722 + 258343568 + -265464733 + -265464733 + -432502583 + -432502583 + -1967815281 + -1967815281 + -1530408968 + 967560929 + 967560929 + -1426106865 + -1426106865 + 190104374 + 430136711 + 430136711 + -1803607012 + -1520512970 + 5018725 + 5018725 + 183526573 + 183526573 + -1040862600 + + + diff --git a/test/legacy_archives/multiset_string_0.txt b/test/legacy_archives/multiset_string_0.txt new file mode 100644 index 00000000..0c851da6 --- /dev/null +++ b/test/legacy_archives/multiset_string_0.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 0 0 0 0 0 0 0 diff --git a/test/legacy_archives/multiset_string_0.xml b/test/legacy_archives/multiset_string_0.xml new file mode 100644 index 00000000..059687d4 --- /dev/null +++ b/test/legacy_archives/multiset_string_0.xml @@ -0,0 +1,14 @@ + + + + + 0 + 0 + 0 + + + 0 + 0 + + + diff --git a/test/legacy_archives/multiset_string_10.txt b/test/legacy_archives/multiset_string_10.txt new file mode 100644 index 00000000..43e97d6a --- /dev/null +++ b/test/legacy_archives/multiset_string_10.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 14 29 0 10 3551458167 10 3551458167 10 2600961200 10 3126701396 9 581989062 10 1832705803 10 1832705803 10 3356491351 10 3356491351 10 1021729225 10 1021729225 10 2097663454 10 1354395138 10 2509159060 0 0 14 0 10 3356491351 10 3356491351 10 2600961200 10 2509159060 10 1021729225 10 1021729225 10 1832705803 10 1832705803 9 581989062 10 1354395138 10 2097663454 10 3551458167 10 3551458167 10 3126701396 diff --git a/test/legacy_archives/multiset_string_10.xml b/test/legacy_archives/multiset_string_10.xml new file mode 100644 index 00000000..b278b2f1 --- /dev/null +++ b/test/legacy_archives/multiset_string_10.xml @@ -0,0 +1,42 @@ + + + + + 14 + 29 + 0 + 3551458167 + 3551458167 + 2600961200 + 3126701396 + 581989062 + 1832705803 + 1832705803 + 3356491351 + 3356491351 + 1021729225 + 1021729225 + 2097663454 + 1354395138 + 2509159060 + + + 14 + 0 + 3356491351 + 3356491351 + 2600961200 + 2509159060 + 1021729225 + 1021729225 + 1832705803 + 1832705803 + 581989062 + 1354395138 + 2097663454 + 3551458167 + 3551458167 + 3126701396 + + + diff --git a/test/legacy_archives/multiset_string_100.txt b/test/legacy_archives/multiset_string_100.txt new file mode 100644 index 00000000..7e6548dc --- /dev/null +++ b/test/legacy_archives/multiset_string_100.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 152 193 0 9 178482033 9 178482033 10 1786883066 9 286273879 9 286273879 10 2298524549 10 2298524549 9 259868705 9 259868705 9 601527218 9 411876340 10 4029502563 10 4029502563 9 109292002 9 941660988 10 4256439559 10 4256439559 10 3401943278 10 2663762324 10 3042379069 10 3042379069 10 2509159060 10 1859681623 10 1859681623 10 3356491351 10 3356491351 10 2620626957 10 2620626957 10 2652233125 10 2652233125 9 607596425 9 607596425 10 1568788209 10 1568788209 10 2868860431 10 2868860431 9 670291604 10 2764558328 10 3226376894 10 3930851132 10 3801137760 9 287343763 9 287343763 10 2138619156 9 967560929 9 967560929 9 257760945 9 257760945 10 2056892401 10 2056892401 10 1829132124 10 3807848133 10 3807848133 9 190104374 9 310524955 9 310524955 10 1481537722 10 2361415202 10 1970368353 10 1970368353 10 2417781066 10 3186940620 10 1421489007 10 1421489007 9 776215953 9 776215953 10 1775667486 9 159865104 10 2355967322 10 2748750790 10 1832705803 10 1832705803 10 4239032041 10 4239032041 10 3876107121 10 3876107121 10 3479493952 10 2600961200 10 1241175627 10 1241175627 9 258343568 10 1630722604 10 3255615729 10 3255615729 7 5018725 7 5018725 10 2774454326 10 2825882502 9 581989062 10 2148764457 10 2148764457 10 3862464713 10 3862464713 10 3862418431 10 3862418431 9 918842470 9 183526573 9 183526573 10 2097663454 10 3377617071 10 3377617071 9 167237906 10 2492774796 10 3254104696 10 3551458167 10 3551458167 10 3989581123 10 3989581123 9 430136711 9 430136711 10 2427983947 10 2427983947 10 2975706254 10 1198739057 10 1198739057 9 473010817 9 473010817 10 2075478837 10 2075478837 10 2956234822 10 3435288264 10 2491360284 10 4076377133 10 4076377133 10 3869918764 9 647803737 9 647803737 9 669358715 9 669358715 9 177811234 10 1021729225 10 1021729225 10 2327152015 10 2327152015 10 3793441059 10 3793441059 9 390937317 9 390937317 10 2421236149 10 2421236149 10 3346291068 10 3880200042 10 2299140636 10 3743837736 10 2784034063 10 2784034063 10 1315739433 10 1315739433 10 1354395138 10 4062777255 10 4062777255 10 3126701396 0 0 152 0 10 3356491351 10 3356491351 10 2600961200 10 2509159060 10 1021729225 10 1021729225 10 1832705803 10 1832705803 9 581989062 10 1354395138 10 2097663454 10 3551458167 10 3551458167 10 3126701396 10 3880200042 10 3255615729 10 3255615729 9 167237906 9 177811234 10 3930851132 10 2361415202 9 259868705 9 259868705 10 3793441059 10 3793441059 9 776215953 9 776215953 10 1630722604 9 310524955 9 310524955 9 473010817 9 473010817 10 1970368353 10 1970368353 9 647803737 9 647803737 10 3042379069 10 3042379069 9 669358715 9 669358715 10 2075478837 10 2075478837 10 2299140636 9 109292002 10 1421489007 10 1421489007 9 287343763 9 287343763 10 3186940620 10 1829132124 10 2748750790 9 941660988 10 3989581123 10 3989581123 10 3479493952 10 2417781066 9 601527218 10 4256439559 10 4256439559 10 3226376894 10 1568788209 10 1568788209 10 1198739057 10 1198739057 10 2138619156 10 4076377133 10 4076377133 10 2825882502 10 3801137760 10 4062777255 10 4062777255 10 2620626957 10 2620626957 10 1775667486 10 3346291068 10 2956234822 9 178482033 9 178482033 9 918842470 10 3377617071 10 3377617071 9 390937317 9 390937317 10 3876107121 10 3876107121 9 670291604 10 1859681623 10 1859681623 10 1241175627 10 1241175627 10 3807848133 10 3807848133 10 1315739433 10 1315739433 10 2355967322 10 1786883066 10 4239032041 10 4239032041 10 2148764457 10 2148764457 10 2427983947 10 2427983947 9 607596425 9 607596425 10 3869918764 10 3401943278 10 2421236149 10 2421236149 9 159865104 9 411876340 10 2056892401 10 2056892401 10 2652233125 10 2652233125 10 2298524549 10 2298524549 9 257760945 9 257760945 10 2663762324 10 2492774796 10 3862418431 10 3862418431 10 3743837736 10 2975706254 10 3435288264 10 2784034063 10 2784034063 9 286273879 9 286273879 10 1481537722 9 258343568 10 4029502563 10 4029502563 10 3862464713 10 3862464713 10 2327152015 10 2327152015 10 2764558328 9 967560929 9 967560929 10 2868860431 10 2868860431 9 190104374 9 430136711 9 430136711 10 2491360284 10 2774454326 7 5018725 7 5018725 9 183526573 9 183526573 10 3254104696 diff --git a/test/legacy_archives/multiset_string_100.xml b/test/legacy_archives/multiset_string_100.xml new file mode 100644 index 00000000..1aed46a4 --- /dev/null +++ b/test/legacy_archives/multiset_string_100.xml @@ -0,0 +1,318 @@ + + + + + 152 + 193 + 0 + 178482033 + 178482033 + 1786883066 + 286273879 + 286273879 + 2298524549 + 2298524549 + 259868705 + 259868705 + 601527218 + 411876340 + 4029502563 + 4029502563 + 109292002 + 941660988 + 4256439559 + 4256439559 + 3401943278 + 2663762324 + 3042379069 + 3042379069 + 2509159060 + 1859681623 + 1859681623 + 3356491351 + 3356491351 + 2620626957 + 2620626957 + 2652233125 + 2652233125 + 607596425 + 607596425 + 1568788209 + 1568788209 + 2868860431 + 2868860431 + 670291604 + 2764558328 + 3226376894 + 3930851132 + 3801137760 + 287343763 + 287343763 + 2138619156 + 967560929 + 967560929 + 257760945 + 257760945 + 2056892401 + 2056892401 + 1829132124 + 3807848133 + 3807848133 + 190104374 + 310524955 + 310524955 + 1481537722 + 2361415202 + 1970368353 + 1970368353 + 2417781066 + 3186940620 + 1421489007 + 1421489007 + 776215953 + 776215953 + 1775667486 + 159865104 + 2355967322 + 2748750790 + 1832705803 + 1832705803 + 4239032041 + 4239032041 + 3876107121 + 3876107121 + 3479493952 + 2600961200 + 1241175627 + 1241175627 + 258343568 + 1630722604 + 3255615729 + 3255615729 + 5018725 + 5018725 + 2774454326 + 2825882502 + 581989062 + 2148764457 + 2148764457 + 3862464713 + 3862464713 + 3862418431 + 3862418431 + 918842470 + 183526573 + 183526573 + 2097663454 + 3377617071 + 3377617071 + 167237906 + 2492774796 + 3254104696 + 3551458167 + 3551458167 + 3989581123 + 3989581123 + 430136711 + 430136711 + 2427983947 + 2427983947 + 2975706254 + 1198739057 + 1198739057 + 473010817 + 473010817 + 2075478837 + 2075478837 + 2956234822 + 3435288264 + 2491360284 + 4076377133 + 4076377133 + 3869918764 + 647803737 + 647803737 + 669358715 + 669358715 + 177811234 + 1021729225 + 1021729225 + 2327152015 + 2327152015 + 3793441059 + 3793441059 + 390937317 + 390937317 + 2421236149 + 2421236149 + 3346291068 + 3880200042 + 2299140636 + 3743837736 + 2784034063 + 2784034063 + 1315739433 + 1315739433 + 1354395138 + 4062777255 + 4062777255 + 3126701396 + + + 152 + 0 + 3356491351 + 3356491351 + 2600961200 + 2509159060 + 1021729225 + 1021729225 + 1832705803 + 1832705803 + 581989062 + 1354395138 + 2097663454 + 3551458167 + 3551458167 + 3126701396 + 3880200042 + 3255615729 + 3255615729 + 167237906 + 177811234 + 3930851132 + 2361415202 + 259868705 + 259868705 + 3793441059 + 3793441059 + 776215953 + 776215953 + 1630722604 + 310524955 + 310524955 + 473010817 + 473010817 + 1970368353 + 1970368353 + 647803737 + 647803737 + 3042379069 + 3042379069 + 669358715 + 669358715 + 2075478837 + 2075478837 + 2299140636 + 109292002 + 1421489007 + 1421489007 + 287343763 + 287343763 + 3186940620 + 1829132124 + 2748750790 + 941660988 + 3989581123 + 3989581123 + 3479493952 + 2417781066 + 601527218 + 4256439559 + 4256439559 + 3226376894 + 1568788209 + 1568788209 + 1198739057 + 1198739057 + 2138619156 + 4076377133 + 4076377133 + 2825882502 + 3801137760 + 4062777255 + 4062777255 + 2620626957 + 2620626957 + 1775667486 + 3346291068 + 2956234822 + 178482033 + 178482033 + 918842470 + 3377617071 + 3377617071 + 390937317 + 390937317 + 3876107121 + 3876107121 + 670291604 + 1859681623 + 1859681623 + 1241175627 + 1241175627 + 3807848133 + 3807848133 + 1315739433 + 1315739433 + 2355967322 + 1786883066 + 4239032041 + 4239032041 + 2148764457 + 2148764457 + 2427983947 + 2427983947 + 607596425 + 607596425 + 3869918764 + 3401943278 + 2421236149 + 2421236149 + 159865104 + 411876340 + 2056892401 + 2056892401 + 2652233125 + 2652233125 + 2298524549 + 2298524549 + 257760945 + 257760945 + 2663762324 + 2492774796 + 3862418431 + 3862418431 + 3743837736 + 2975706254 + 3435288264 + 2784034063 + 2784034063 + 286273879 + 286273879 + 1481537722 + 258343568 + 4029502563 + 4029502563 + 3862464713 + 3862464713 + 2327152015 + 2327152015 + 2764558328 + 967560929 + 967560929 + 2868860431 + 2868860431 + 190104374 + 430136711 + 430136711 + 2491360284 + 2774454326 + 5018725 + 5018725 + 183526573 + 183526573 + 3254104696 + + + diff --git a/test/legacy_archives/set_int_0.txt b/test/legacy_archives/set_int_0.txt new file mode 100644 index 00000000..0ddbd128 --- /dev/null +++ b/test/legacy_archives/set_int_0.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 0 0 0 0 0 diff --git a/test/legacy_archives/set_int_0.xml b/test/legacy_archives/set_int_0.xml new file mode 100644 index 00000000..6f8e63e7 --- /dev/null +++ b/test/legacy_archives/set_int_0.xml @@ -0,0 +1,14 @@ + + + + + 0 + 0 + 0 + + + 0 + 0 + + + diff --git a/test/legacy_archives/set_int_10.txt b/test/legacy_archives/set_int_10.txt new file mode 100644 index 00000000..fdda5f54 --- /dev/null +++ b/test/legacy_archives/set_int_10.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 10 13 0 2097663454 -1785808236 -938475945 1354395138 581989062 -1694006096 1832705803 -743509129 1021729225 -1168265900 14 0 -938475945 -938475945 -1694006096 -1785808236 1021729225 1021729225 1832705803 1832705803 581989062 1354395138 2097663454 -743509129 -743509129 -1168265900 diff --git a/test/legacy_archives/set_int_10.xml b/test/legacy_archives/set_int_10.xml new file mode 100644 index 00000000..9276b8a8 --- /dev/null +++ b/test/legacy_archives/set_int_10.xml @@ -0,0 +1,38 @@ + + + + + 10 + 13 + 0 + 2097663454 + -1785808236 + -938475945 + 1354395138 + 581989062 + -1694006096 + 1832705803 + -743509129 + 1021729225 + -1168265900 + + + 14 + 0 + -938475945 + -938475945 + -1694006096 + -1785808236 + 1021729225 + 1021729225 + 1832705803 + 1832705803 + 581989062 + 1354395138 + 2097663454 + -743509129 + -743509129 + -1168265900 + + + diff --git a/test/legacy_archives/set_int_100.txt b/test/legacy_archives/set_int_100.txt new file mode 100644 index 00000000..e92611eb --- /dev/null +++ b/test/legacy_archives/set_int_100.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 100 193 0 1775667486 -948676228 -1108026676 -1866983349 258343568 -1068590402 -432548865 177811234 5018725 190104374 1315739433 -1995826660 -305386173 287343763 1241175627 109292002 1021729225 918842470 -1426106865 -1338732474 669358715 183526573 -938475945 -1694006096 1630722604 -1933552094 257760945 390937317 -1510933233 259868705 -38527737 -551129560 1832705803 607596425 -1520512970 -1674340339 1421489007 -501526237 -1873731147 -1877186230 -218590163 647803737 -859679032 967560929 -815473344 -487119163 -1546216506 1859681623 -1040862600 -893024018 -1252588227 -1319261042 -1785808236 1198739057 -1469084794 473010817 1481537722 2138619156 -1039351567 -493829536 411876340 -364116164 776215953 1568788209 -1631204972 601527218 -232190041 286273879 2075478837 -1168265900 581989062 178482033 1354395138 -1530408968 -414767254 1970368353 -1967815281 941660988 1786883066 670291604 -1803607012 1829132124 -432502583 -1642734171 -425048532 2097663454 -1938999974 -917350225 2056892401 -55935255 -1802192500 -418860175 -2146202839 310524955 159865104 -265464733 -1996442747 430136711 -743509129 167237906 152 0 -938475945 -938475945 -1694006096 -1785808236 1021729225 1021729225 1832705803 1832705803 581989062 1354395138 2097663454 -743509129 -743509129 -1168265900 -414767254 -1039351567 -1039351567 167237906 177811234 -364116164 -1933552094 259868705 259868705 -501526237 -501526237 776215953 776215953 1630722604 310524955 310524955 473010817 473010817 1970368353 1970368353 647803737 647803737 -1252588227 -1252588227 669358715 669358715 2075478837 2075478837 -1995826660 109292002 1421489007 1421489007 287343763 287343763 -1108026676 1829132124 -1546216506 941660988 -305386173 -305386173 -815473344 -1877186230 601527218 -38527737 -38527737 -1068590402 1568788209 1568788209 1198739057 1198739057 2138619156 -218590163 -218590163 -1469084794 -493829536 -232190041 -232190041 -1674340339 -1674340339 1775667486 -948676228 -1338732474 178482033 178482033 918842470 -917350225 -917350225 390937317 390937317 -418860175 -418860175 670291604 1859681623 1859681623 1241175627 1241175627 -487119163 -487119163 1315739433 1315739433 -1938999974 1786883066 -55935255 -55935255 -2146202839 -2146202839 -1866983349 -1866983349 607596425 607596425 -425048532 -893024018 -1873731147 -1873731147 159865104 411876340 2056892401 2056892401 -1642734171 -1642734171 -1996442747 -1996442747 257760945 257760945 -1631204972 -1802192500 -432548865 -432548865 -551129560 -1319261042 -859679032 -1510933233 -1510933233 286273879 286273879 1481537722 258343568 -265464733 -265464733 -432502583 -432502583 -1967815281 -1967815281 -1530408968 967560929 967560929 -1426106865 -1426106865 190104374 430136711 430136711 -1803607012 -1520512970 5018725 5018725 183526573 183526573 -1040862600 diff --git a/test/legacy_archives/set_int_100.xml b/test/legacy_archives/set_int_100.xml new file mode 100644 index 00000000..9f312124 --- /dev/null +++ b/test/legacy_archives/set_int_100.xml @@ -0,0 +1,266 @@ + + + + + 100 + 193 + 0 + 1775667486 + -948676228 + -1108026676 + -1866983349 + 258343568 + -1068590402 + -432548865 + 177811234 + 5018725 + 190104374 + 1315739433 + -1995826660 + -305386173 + 287343763 + 1241175627 + 109292002 + 1021729225 + 918842470 + -1426106865 + -1338732474 + 669358715 + 183526573 + -938475945 + -1694006096 + 1630722604 + -1933552094 + 257760945 + 390937317 + -1510933233 + 259868705 + -38527737 + -551129560 + 1832705803 + 607596425 + -1520512970 + -1674340339 + 1421489007 + -501526237 + -1873731147 + -1877186230 + -218590163 + 647803737 + -859679032 + 967560929 + -815473344 + -487119163 + -1546216506 + 1859681623 + -1040862600 + -893024018 + -1252588227 + -1319261042 + -1785808236 + 1198739057 + -1469084794 + 473010817 + 1481537722 + 2138619156 + -1039351567 + -493829536 + 411876340 + -364116164 + 776215953 + 1568788209 + -1631204972 + 601527218 + -232190041 + 286273879 + 2075478837 + -1168265900 + 581989062 + 178482033 + 1354395138 + -1530408968 + -414767254 + 1970368353 + -1967815281 + 941660988 + 1786883066 + 670291604 + -1803607012 + 1829132124 + -432502583 + -1642734171 + -425048532 + 2097663454 + -1938999974 + -917350225 + 2056892401 + -55935255 + -1802192500 + -418860175 + -2146202839 + 310524955 + 159865104 + -265464733 + -1996442747 + 430136711 + -743509129 + 167237906 + + + 152 + 0 + -938475945 + -938475945 + -1694006096 + -1785808236 + 1021729225 + 1021729225 + 1832705803 + 1832705803 + 581989062 + 1354395138 + 2097663454 + -743509129 + -743509129 + -1168265900 + -414767254 + -1039351567 + -1039351567 + 167237906 + 177811234 + -364116164 + -1933552094 + 259868705 + 259868705 + -501526237 + -501526237 + 776215953 + 776215953 + 1630722604 + 310524955 + 310524955 + 473010817 + 473010817 + 1970368353 + 1970368353 + 647803737 + 647803737 + -1252588227 + -1252588227 + 669358715 + 669358715 + 2075478837 + 2075478837 + -1995826660 + 109292002 + 1421489007 + 1421489007 + 287343763 + 287343763 + -1108026676 + 1829132124 + -1546216506 + 941660988 + -305386173 + -305386173 + -815473344 + -1877186230 + 601527218 + -38527737 + -38527737 + -1068590402 + 1568788209 + 1568788209 + 1198739057 + 1198739057 + 2138619156 + -218590163 + -218590163 + -1469084794 + -493829536 + -232190041 + -232190041 + -1674340339 + -1674340339 + 1775667486 + -948676228 + -1338732474 + 178482033 + 178482033 + 918842470 + -917350225 + -917350225 + 390937317 + 390937317 + -418860175 + -418860175 + 670291604 + 1859681623 + 1859681623 + 1241175627 + 1241175627 + -487119163 + -487119163 + 1315739433 + 1315739433 + -1938999974 + 1786883066 + -55935255 + -55935255 + -2146202839 + -2146202839 + -1866983349 + -1866983349 + 607596425 + 607596425 + -425048532 + -893024018 + -1873731147 + -1873731147 + 159865104 + 411876340 + 2056892401 + 2056892401 + -1642734171 + -1642734171 + -1996442747 + -1996442747 + 257760945 + 257760945 + -1631204972 + -1802192500 + -432548865 + -432548865 + -551129560 + -1319261042 + -859679032 + -1510933233 + -1510933233 + 286273879 + 286273879 + 1481537722 + 258343568 + -265464733 + -265464733 + -432502583 + -432502583 + -1967815281 + -1967815281 + -1530408968 + 967560929 + 967560929 + -1426106865 + -1426106865 + 190104374 + 430136711 + 430136711 + -1803607012 + -1520512970 + 5018725 + 5018725 + 183526573 + 183526573 + -1040862600 + + + diff --git a/test/legacy_archives/set_string_0.txt b/test/legacy_archives/set_string_0.txt new file mode 100644 index 00000000..0c851da6 --- /dev/null +++ b/test/legacy_archives/set_string_0.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 0 0 0 0 0 0 0 diff --git a/test/legacy_archives/set_string_0.xml b/test/legacy_archives/set_string_0.xml new file mode 100644 index 00000000..059687d4 --- /dev/null +++ b/test/legacy_archives/set_string_0.xml @@ -0,0 +1,14 @@ + + + + + 0 + 0 + 0 + + + 0 + 0 + + + diff --git a/test/legacy_archives/set_string_10.txt b/test/legacy_archives/set_string_10.txt new file mode 100644 index 00000000..8ed26324 --- /dev/null +++ b/test/legacy_archives/set_string_10.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 10 13 0 10 1832705803 10 2097663454 10 3551458167 10 2509159060 10 2600961200 9 581989062 10 1021729225 10 3126701396 10 1354395138 10 3356491351 0 0 14 0 10 3356491351 10 3356491351 10 2600961200 10 2509159060 10 1021729225 10 1021729225 10 1832705803 10 1832705803 9 581989062 10 1354395138 10 2097663454 10 3551458167 10 3551458167 10 3126701396 diff --git a/test/legacy_archives/set_string_10.xml b/test/legacy_archives/set_string_10.xml new file mode 100644 index 00000000..b0506fac --- /dev/null +++ b/test/legacy_archives/set_string_10.xml @@ -0,0 +1,38 @@ + + + + + 10 + 13 + 0 + 1832705803 + 2097663454 + 3551458167 + 2509159060 + 2600961200 + 581989062 + 1021729225 + 3126701396 + 1354395138 + 3356491351 + + + 14 + 0 + 3356491351 + 3356491351 + 2600961200 + 2509159060 + 1021729225 + 1021729225 + 1832705803 + 1832705803 + 581989062 + 1354395138 + 2097663454 + 3551458167 + 3551458167 + 3126701396 + + + diff --git a/test/legacy_archives/set_string_100.txt b/test/legacy_archives/set_string_100.txt new file mode 100644 index 00000000..b96f16d4 --- /dev/null +++ b/test/legacy_archives/set_string_100.txt @@ -0,0 +1 @@ +22 serialization::archive 19 0 0 100 193 0 10 1970368353 10 2417781066 10 3186940620 10 1421489007 9 776215953 10 1775667486 9 159865104 10 2355967322 10 2748750790 10 1832705803 10 4239032041 10 3876107121 10 3479493952 10 2600961200 10 1241175627 9 258343568 10 1630722604 10 3255615729 7 5018725 10 2774454326 10 2825882502 9 581989062 9 178482033 10 1786883066 9 286273879 10 2298524549 9 259868705 9 601527218 9 411876340 10 4029502563 9 109292002 9 941660988 10 4256439559 10 3401943278 10 2663762324 10 3042379069 10 2509159060 10 1859681623 10 3356491351 10 2620626957 10 2652233125 10 1568788209 9 607596425 10 2868860431 9 670291604 10 2764558328 10 3226376894 10 3930851132 10 3801137760 9 287343763 10 2138619156 9 257760945 9 967560929 10 2056892401 10 1829132124 10 3807848133 9 310524955 9 190104374 10 1481537722 10 2361415202 10 2148764457 10 3862464713 10 3862418431 9 918842470 9 183526573 10 2097663454 10 3377617071 9 167237906 10 2492774796 10 3254104696 10 3551458167 10 3989581123 10 2427983947 9 430136711 10 2975706254 10 1198739057 9 473010817 10 2075478837 10 2956234822 10 3435288264 10 2491360284 10 4076377133 10 3869918764 9 647803737 9 669358715 9 177811234 10 1021729225 10 2327152015 10 3793441059 9 390937317 10 2421236149 10 3346291068 10 3880200042 10 2299140636 10 3743837736 10 1315739433 10 2784034063 10 1354395138 10 4062777255 10 3126701396 0 0 152 0 10 3356491351 10 3356491351 10 2600961200 10 2509159060 10 1021729225 10 1021729225 10 1832705803 10 1832705803 9 581989062 10 1354395138 10 2097663454 10 3551458167 10 3551458167 10 3126701396 10 3880200042 10 3255615729 10 3255615729 9 167237906 9 177811234 10 3930851132 10 2361415202 9 259868705 9 259868705 10 3793441059 10 3793441059 9 776215953 9 776215953 10 1630722604 9 310524955 9 310524955 9 473010817 9 473010817 10 1970368353 10 1970368353 9 647803737 9 647803737 10 3042379069 10 3042379069 9 669358715 9 669358715 10 2075478837 10 2075478837 10 2299140636 9 109292002 10 1421489007 10 1421489007 9 287343763 9 287343763 10 3186940620 10 1829132124 10 2748750790 9 941660988 10 3989581123 10 3989581123 10 3479493952 10 2417781066 9 601527218 10 4256439559 10 4256439559 10 3226376894 10 1568788209 10 1568788209 10 1198739057 10 1198739057 10 2138619156 10 4076377133 10 4076377133 10 2825882502 10 3801137760 10 4062777255 10 4062777255 10 2620626957 10 2620626957 10 1775667486 10 3346291068 10 2956234822 9 178482033 9 178482033 9 918842470 10 3377617071 10 3377617071 9 390937317 9 390937317 10 3876107121 10 3876107121 9 670291604 10 1859681623 10 1859681623 10 1241175627 10 1241175627 10 3807848133 10 3807848133 10 1315739433 10 1315739433 10 2355967322 10 1786883066 10 4239032041 10 4239032041 10 2148764457 10 2148764457 10 2427983947 10 2427983947 9 607596425 9 607596425 10 3869918764 10 3401943278 10 2421236149 10 2421236149 9 159865104 9 411876340 10 2056892401 10 2056892401 10 2652233125 10 2652233125 10 2298524549 10 2298524549 9 257760945 9 257760945 10 2663762324 10 2492774796 10 3862418431 10 3862418431 10 3743837736 10 2975706254 10 3435288264 10 2784034063 10 2784034063 9 286273879 9 286273879 10 1481537722 9 258343568 10 4029502563 10 4029502563 10 3862464713 10 3862464713 10 2327152015 10 2327152015 10 2764558328 9 967560929 9 967560929 10 2868860431 10 2868860431 9 190104374 9 430136711 9 430136711 10 2491360284 10 2774454326 7 5018725 7 5018725 9 183526573 9 183526573 10 3254104696 diff --git a/test/legacy_archives/set_string_100.xml b/test/legacy_archives/set_string_100.xml new file mode 100644 index 00000000..f59dd672 --- /dev/null +++ b/test/legacy_archives/set_string_100.xml @@ -0,0 +1,266 @@ + + + + + 100 + 193 + 0 + 1970368353 + 2417781066 + 3186940620 + 1421489007 + 776215953 + 1775667486 + 159865104 + 2355967322 + 2748750790 + 1832705803 + 4239032041 + 3876107121 + 3479493952 + 2600961200 + 1241175627 + 258343568 + 1630722604 + 3255615729 + 5018725 + 2774454326 + 2825882502 + 581989062 + 178482033 + 1786883066 + 286273879 + 2298524549 + 259868705 + 601527218 + 411876340 + 4029502563 + 109292002 + 941660988 + 4256439559 + 3401943278 + 2663762324 + 3042379069 + 2509159060 + 1859681623 + 3356491351 + 2620626957 + 2652233125 + 1568788209 + 607596425 + 2868860431 + 670291604 + 2764558328 + 3226376894 + 3930851132 + 3801137760 + 287343763 + 2138619156 + 257760945 + 967560929 + 2056892401 + 1829132124 + 3807848133 + 310524955 + 190104374 + 1481537722 + 2361415202 + 2148764457 + 3862464713 + 3862418431 + 918842470 + 183526573 + 2097663454 + 3377617071 + 167237906 + 2492774796 + 3254104696 + 3551458167 + 3989581123 + 2427983947 + 430136711 + 2975706254 + 1198739057 + 473010817 + 2075478837 + 2956234822 + 3435288264 + 2491360284 + 4076377133 + 3869918764 + 647803737 + 669358715 + 177811234 + 1021729225 + 2327152015 + 3793441059 + 390937317 + 2421236149 + 3346291068 + 3880200042 + 2299140636 + 3743837736 + 1315739433 + 2784034063 + 1354395138 + 4062777255 + 3126701396 + + + 152 + 0 + 3356491351 + 3356491351 + 2600961200 + 2509159060 + 1021729225 + 1021729225 + 1832705803 + 1832705803 + 581989062 + 1354395138 + 2097663454 + 3551458167 + 3551458167 + 3126701396 + 3880200042 + 3255615729 + 3255615729 + 167237906 + 177811234 + 3930851132 + 2361415202 + 259868705 + 259868705 + 3793441059 + 3793441059 + 776215953 + 776215953 + 1630722604 + 310524955 + 310524955 + 473010817 + 473010817 + 1970368353 + 1970368353 + 647803737 + 647803737 + 3042379069 + 3042379069 + 669358715 + 669358715 + 2075478837 + 2075478837 + 2299140636 + 109292002 + 1421489007 + 1421489007 + 287343763 + 287343763 + 3186940620 + 1829132124 + 2748750790 + 941660988 + 3989581123 + 3989581123 + 3479493952 + 2417781066 + 601527218 + 4256439559 + 4256439559 + 3226376894 + 1568788209 + 1568788209 + 1198739057 + 1198739057 + 2138619156 + 4076377133 + 4076377133 + 2825882502 + 3801137760 + 4062777255 + 4062777255 + 2620626957 + 2620626957 + 1775667486 + 3346291068 + 2956234822 + 178482033 + 178482033 + 918842470 + 3377617071 + 3377617071 + 390937317 + 390937317 + 3876107121 + 3876107121 + 670291604 + 1859681623 + 1859681623 + 1241175627 + 1241175627 + 3807848133 + 3807848133 + 1315739433 + 1315739433 + 2355967322 + 1786883066 + 4239032041 + 4239032041 + 2148764457 + 2148764457 + 2427983947 + 2427983947 + 607596425 + 607596425 + 3869918764 + 3401943278 + 2421236149 + 2421236149 + 159865104 + 411876340 + 2056892401 + 2056892401 + 2652233125 + 2652233125 + 2298524549 + 2298524549 + 257760945 + 257760945 + 2663762324 + 2492774796 + 3862418431 + 3862418431 + 3743837736 + 2975706254 + 3435288264 + 2784034063 + 2784034063 + 286273879 + 286273879 + 1481537722 + 258343568 + 4029502563 + 4029502563 + 3862464713 + 3862464713 + 2327152015 + 2327152015 + 2764558328 + 967560929 + 967560929 + 2868860431 + 2868860431 + 190104374 + 430136711 + 430136711 + 2491360284 + 2774454326 + 5018725 + 5018725 + 183526573 + 183526573 + 3254104696 + + + diff --git a/test/objects/test.hpp b/test/objects/test.hpp index b1a253e5..853e2205 100644 --- a/test/objects/test.hpp +++ b/test/objects/test.hpp @@ -1,6 +1,7 @@ // Copyright 2006-2009 Daniel James. // Copyright 2022 Christian Mazakas +// Copyright 2023 Joaquin M Lopez Munoz // 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) @@ -11,6 +12,7 @@ #include "../helpers/fwd.hpp" #include "../helpers/memory.hpp" #include +#include #include #include @@ -74,6 +76,14 @@ namespace test { { return out << "(" << o.tag1_ << "," << o.tag2_ << ")"; } + + + template + void serialize(Archive& ar,unsigned int) + { + ar & boost::core::make_nvp("tag1", tag1_); + ar & boost::core::make_nvp("tag2", tag2_); + } }; class movable : private counted_object diff --git a/test/unordered/compile_tests.hpp b/test/unordered/compile_tests.hpp index 16d11f49..b2c00a54 100644 --- a/test/unordered/compile_tests.hpp +++ b/test/unordered/compile_tests.hpp @@ -18,6 +18,7 @@ #endif #include "../helpers/check_return_type.hpp" +#include #include #include #include @@ -26,7 +27,6 @@ #include #include #include -#include typedef long double comparison_type; @@ -165,7 +165,7 @@ template void container_test(X& r, T const&) X u5 = rvalue(a_const); a.swap(b); - boost::swap(a, b); + boost::core::invoke_swap(a, b); test::check_return_type::equals_ref(r = a); // Allocator @@ -254,7 +254,7 @@ template void unordered_destructible_test(X&) test::check_return_type::equals(a_const.cend()); a.swap(b); - boost::swap(a, b); + boost::core::invoke_swap(a, b); test::check_return_type::equals(a.size()); test::check_return_type::equals(a.max_size()); @@ -546,7 +546,7 @@ template void unordered_unique_test(X& r, T const& t) test::check_return_type::equals(insert_return.inserted); test::check_return_type::equals(insert_return.position); test::check_return_type::equals_ref(insert_return.node); - boost::swap(insert_return, insert_return2); + boost::core::invoke_swap(insert_return, insert_return2); #endif } diff --git a/test/unordered/serialization_tests.cpp b/test/unordered/serialization_tests.cpp new file mode 100644 index 00000000..c1b3fc7b --- /dev/null +++ b/test/unordered/serialization_tests.cpp @@ -0,0 +1,251 @@ +// Copyright (C) 2023 Joaquin M Lopez Munoz +// 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) + +// temporary #define till all transitive includes comply with +// https://github.com/boostorg/core/commit/5f6fe65 + +#define BOOST_ALLOW_DEPRECATED_HEADERS + +#include "../helpers/unordered.hpp" + +#include "../objects/test.hpp" +#include "../helpers/random_values.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(BOOST_NO_CXX11_HDR_RANDOM) || BOOST_WORKAROUND(BOOST_MSVC, < 1700) +#define BOOST_UNORDERED_TEST_USE_STD_RANDOM_SHUFFLE +#endif + +#ifndef BOOST_UNORDERED_TEST_USE_STD_RANDOM_SHUFFLE +#include +#endif + +namespace { + + template + void serialization_tests( + Container*, ArchivePair*, test::random_generator generator) + { + typedef typename Container::iterator iterator; + typedef std::vector iterator_vector; + typedef typename ArchivePair::first_type output_archive; + typedef typename ArchivePair::second_type input_archive; + + BOOST_LIGHTWEIGHT_TEST_OSTREAM << "serialization_tests1\n"; + { + Container c; + iterator it = c.end(); + + std::ostringstream oss; + { + output_archive oa(oss); + oa << boost::serialization::make_nvp("container", c); + oa << boost::serialization::make_nvp("iterator", it); + } + + test::random_values values(100, generator); + Container c2(values.begin(), values.end()); + iterator it2 = c2.begin(); + std::istringstream iss(oss.str()); + input_archive ia(iss); + ia >> boost::serialization::make_nvp("container", c2); + ia >> boost::serialization::make_nvp("iterator", it2); + BOOST_TEST(c2.empty()); + BOOST_TEST(it2 == c2.end()); + } + + BOOST_LIGHTWEIGHT_TEST_OSTREAM << "serialization_tests2\n"; + { + test::random_values values(100, generator); + Container c(values.begin(), values.end()); + + iterator_vector v; + for (iterator first = c.begin(), last=c.end(); ; ) { + v.push_back(first); + if(first == last) break; + ++first; + } + +#ifdef BOOST_UNORDERED_TEST_USE_STD_RANDOM_SHUFFLE + std::random_shuffle(v.begin(), v.end()); +#else + std::shuffle(v.begin(), v.end(), std::mt19937(4213)); +#endif + + std::ostringstream oss; + { + output_archive oa(oss); + oa << boost::serialization::make_nvp("container", c); + oa << boost::serialization::make_nvp("iterators", v); + } + + Container c2; + iterator_vector v2; + std::istringstream iss(oss.str()); + input_archive ia(iss); + ia >> boost::serialization::make_nvp("container", c2); + ia >> boost::serialization::make_nvp("iterators", v2); + BOOST_TEST(c == c2); + BOOST_TEST_EQ(v.size(), v2.size()); + + for (std::size_t i=0; i < v.size(); ++i) { + iterator it = v[i]; + iterator it2 = v2[i]; + if (it == c.end()) { + BOOST_TEST(it2 == c2.end()); + } + else { + BOOST_TEST(it2 != c2.end()); + BOOST_TEST(*it == *it2); + } + } + } + } + + // used by legacy_serialization_test, passed as argv[1] + const char* test_dir="."; + + using test::default_generator; + + std::pair< + boost::archive::text_oarchive, boost::archive::text_iarchive>* + text_archive; + std::pair< + boost::archive::xml_oarchive, boost::archive::xml_iarchive>* + xml_archive; + +#ifdef BOOST_UNORDERED_FOA_TESTS + boost::unordered_flat_map< + test::object, test::object, test::hash, test::equal_to>* test_flat_map; + boost::unordered_node_map< + test::object, test::object, test::hash, test::equal_to>* test_node_map; + boost::unordered_flat_set< + test::object, test::hash, test::equal_to>* test_flat_set; + boost::unordered_node_set< + test::object, test::hash, test::equal_to>* test_node_set; + + UNORDERED_TEST(serialization_tests, + ((test_flat_map)(test_node_map)(test_flat_set)(test_node_set)) + ((text_archive)(xml_archive)) + ((default_generator))) +#else + boost::unordered_map< + test::object, test::object, test::hash, test::equal_to>* test_map; + boost::unordered_multimap< + test::object, test::object, test::hash, test::equal_to>* test_multimap; + boost::unordered_set< + test::object, test::hash, test::equal_to>* test_set; + boost::unordered_multiset< + test::object, test::hash, test::equal_to>* test_multiset; + + UNORDERED_TEST(serialization_tests, + ((test_map)(test_multimap)(test_set)(test_multiset)) + ((text_archive)(xml_archive)) + ((default_generator))) + + template + struct non_const + { + typedef T type; + }; + + template + struct non_const + { + typedef typename non_const::type type; + }; + + template + struct non_const > + { + typedef std::pair< + typename non_const::type, + typename non_const::type> type; + }; + + template + struct labeled + { + labeled(const char* label_): label(label_) {} + + const char* label; + }; + + template + void legacy_serialization_test(labeled lc, labeled la) + { + typedef typename Container::value_type value_type; + typedef std::vector::type> value_vector; + + static const std::size_t sizes[] = {0, 10, 100}; + + BOOST_LIGHTWEIGHT_TEST_OSTREAM << "legacy_serialization_test\n"; + + for(int i = 0; i < sizeof(sizes)/sizeof(sizes[0]); ++i) { + char filename[1024]; + std::sprintf( + filename, "%s/legacy_archives/%s_%d.%s", + test_dir, lc.label, (int)sizes[i], la.label); + std::ifstream ifs(filename); + Archive ia(ifs); + Container c; + value_vector v; + ia >> boost::serialization::make_nvp("container", c); + ia >> boost::serialization::make_nvp("values", v); + BOOST_TEST(v.size() >= sizes[i]); // values generated with repetition + BOOST_TEST((c==Container(v.begin(),v.end()))); + } + } + + labeled > + labeled_map_int("map_int"); + labeled > + labeled_map_string("map_string"); + labeled > + labeled_multimap_int("multimap_int"); + labeled > + labeled_multimap_string("multimap_string"); + labeled > + labeled_set_int("set_int"); + labeled > + labeled_set_string("set_string"); + labeled > + labeled_multiset_int("multiset_int"); + labeled > + labeled_multiset_string("multiset_string"); + + labeled labeled_text_iarchive("txt"); + labeled labeled_xml_iarchive("xml"); + + UNORDERED_TEST(legacy_serialization_test, + ((labeled_map_int)(labeled_map_string) + (labeled_multimap_int)(labeled_multimap_string) + (labeled_set_int)(labeled_set_string) + (labeled_multiset_int)(labeled_multiset_string)) + ((labeled_text_iarchive)(labeled_xml_iarchive))) +#endif +} + +int main(int argc, char* argv[]) +{ + if (argc > 1) test_dir = argv[1]; + + BOOST_UNORDERED_TEST_COMPILER_INFO() + ::test::get_state().run_tests(); + return boost::report_errors(); +}