/* 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); }