From af9a7999257e0c73737f94012148210fc6099436 Mon Sep 17 00:00:00 2001 From: kenshi84 Date: Wed, 21 Dec 2016 14:43:43 +0900 Subject: [PATCH] account for API difference between 1.58 & 1.59 --- .../archive/portable_binary_iarchive.hpp | 30 +++++++++++++++++++ .../archive/portable_binary_oarchive.hpp | 17 +++++++++++ 2 files changed, 47 insertions(+) diff --git a/external/boost/archive/portable_binary_iarchive.hpp b/external/boost/archive/portable_binary_iarchive.hpp index c33085b0..7149cca0 100644 --- a/external/boost/archive/portable_binary_iarchive.hpp +++ b/external/boost/archive/portable_binary_iarchive.hpp @@ -22,6 +22,7 @@ // See http://www.boost.org for updates, documentation, and revision history. #include +#include #include #include #include @@ -153,6 +154,7 @@ protected: } typedef boost::archive::detail::common_iarchive detail_common_iarchive; +#if BOOST_VERSION > 105800 template void load_override(T & t){ this->detail_common_iarchive::load_override(t); @@ -160,6 +162,15 @@ protected: void load_override(boost::archive::class_name_type & t); // binary files don't include the optional information void load_override(boost::archive::class_id_optional_type &){} +#else + template + void load_override(T & t, int){ + this->detail_common_iarchive::load_override(t, 0); + } + void load_override(boost::archive::class_name_type & t, int); + // binary files don't include the optional information + void load_override(boost::archive::class_id_optional_type &, int){} +#endif void init(unsigned int flags); public: @@ -257,6 +268,7 @@ portable_binary_iarchive::load_impl(boost::intmax_t & l, char maxsize){ l = -l; } +#if BOOST_VERSION > 105800 inline void portable_binary_iarchive::load_override( boost::archive::class_name_type & t @@ -273,6 +285,24 @@ portable_binary_iarchive::load_override( // borland tweak t.t[cn.size()] = '\0'; } +#else +inline void +portable_binary_iarchive::load_override( + boost::archive::class_name_type & t, int +){ + std::string cn; + cn.reserve(BOOST_SERIALIZATION_MAX_KEY_SIZE); + load_override(cn, 0); + if(cn.size() > (BOOST_SERIALIZATION_MAX_KEY_SIZE - 1)) + boost::serialization::throw_exception( + boost::archive::archive_exception( + boost::archive::archive_exception::invalid_class_name) + ); + std::memcpy(t, cn.data(), cn.size()); + // borland tweak + t.t[cn.size()] = '\0'; +} +#endif inline void portable_binary_iarchive::init(unsigned int flags){ diff --git a/external/boost/archive/portable_binary_oarchive.hpp b/external/boost/archive/portable_binary_oarchive.hpp index 19027f65..8fd7090a 100644 --- a/external/boost/archive/portable_binary_oarchive.hpp +++ b/external/boost/archive/portable_binary_oarchive.hpp @@ -22,6 +22,7 @@ // See http://www.boost.org for updates, documentation, and revision history. #include +#include #include #include #include @@ -133,6 +134,7 @@ protected: // extra stuff to get it passed borland compilers typedef boost::archive::detail::common_oarchive detail_common_oarchive; +#if BOOST_VERSION > 105800 template void save_override(T & t){ this->detail_common_oarchive::save_override(t); @@ -146,6 +148,21 @@ protected: void save_override( const boost::archive::class_id_optional_type & /* t */ ){} +#else + template + void save_override(T & t, int){ + this->detail_common_oarchive::save_override(t, 0); + } + // explicitly convert to char * to avoid compile ambiguities + void save_override(const boost::archive::class_name_type & t, int){ + const std::string s(t); + * this << s; + } + // binary files don't include the optional information + void save_override( + const boost::archive::class_id_optional_type & /* t */, int + ){} +#endif void init(unsigned int flags); public: