diff options
Diffstat (limited to 'external/boost/archive')
-rw-r--r-- | external/boost/archive/portable_binary_iarchive.hpp | 30 | ||||
-rw-r--r-- | external/boost/archive/portable_binary_oarchive.hpp | 17 |
2 files changed, 47 insertions, 0 deletions
diff --git a/external/boost/archive/portable_binary_iarchive.hpp b/external/boost/archive/portable_binary_iarchive.hpp index c33085b05..7149cca0f 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 <istream>
+#include <boost/version.hpp>
#include <boost/serialization/string.hpp>
#include <boost/serialization/item_version_type.hpp>
#include <boost/archive/archive_exception.hpp>
@@ -153,6 +154,7 @@ protected: }
typedef boost::archive::detail::common_iarchive<portable_binary_iarchive>
detail_common_iarchive;
+#if BOOST_VERSION > 105800
template<class T>
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<class T>
+ 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 19027f65a..8fd7090a1 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 <ostream>
+#include <boost/version.hpp>
#include <boost/serialization/string.hpp>
#include <boost/archive/archive_exception.hpp>
#include <boost/archive/basic_binary_oprimitive.hpp>
@@ -133,6 +134,7 @@ protected: // extra stuff to get it passed borland compilers
typedef boost::archive::detail::common_oarchive<portable_binary_oarchive>
detail_common_oarchive;
+#if BOOST_VERSION > 105800
template<class T>
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<class T>
+ 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:
|