summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '3rdParty/Boost/src/boost/archive')
-rw-r--r--3rdParty/Boost/src/boost/archive/add_facet.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/archive_exception.hpp20
-rw-r--r--3rdParty/Boost/src/boost/archive/basic_archive.hpp7
-rw-r--r--3rdParty/Boost/src/boost/archive/basic_binary_iarchive.hpp22
-rw-r--r--3rdParty/Boost/src/boost/archive/basic_binary_iprimitive.hpp6
-rw-r--r--3rdParty/Boost/src/boost/archive/basic_binary_oarchive.hpp22
-rw-r--r--3rdParty/Boost/src/boost/archive/basic_binary_oprimitive.hpp9
-rw-r--r--3rdParty/Boost/src/boost/archive/basic_streambuf_locale_saver.hpp4
-rw-r--r--3rdParty/Boost/src/boost/archive/basic_text_iarchive.hpp22
-rw-r--r--3rdParty/Boost/src/boost/archive/basic_text_iprimitive.hpp17
-rw-r--r--3rdParty/Boost/src/boost/archive/basic_text_oarchive.hpp24
-rw-r--r--3rdParty/Boost/src/boost/archive/basic_text_oprimitive.hpp87
-rw-r--r--3rdParty/Boost/src/boost/archive/basic_xml_archive.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/basic_xml_iarchive.hpp22
-rw-r--r--3rdParty/Boost/src/boost/archive/basic_xml_oarchive.hpp17
-rw-r--r--3rdParty/Boost/src/boost/archive/binary_iarchive.hpp45
-rw-r--r--3rdParty/Boost/src/boost/archive/binary_iarchive_impl.hpp20
-rw-r--r--3rdParty/Boost/src/boost/archive/binary_oarchive.hpp4
-rw-r--r--3rdParty/Boost/src/boost/archive/binary_oarchive_impl.hpp20
-rw-r--r--3rdParty/Boost/src/boost/archive/binary_wiarchive.hpp39
-rw-r--r--3rdParty/Boost/src/boost/archive/binary_woarchive.hpp4
-rw-r--r--3rdParty/Boost/src/boost/archive/codecvt_null.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/archive_serializer_map.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/auto_link_archive.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/auto_link_warchive.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/basic_iarchive.hpp13
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/basic_iserializer.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/basic_oarchive.hpp16
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/basic_oserializer.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/basic_pointer_iserializer.hpp5
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/basic_pointer_oserializer.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/basic_serializer.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/basic_serializer_map.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/check.hpp30
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/common_iarchive.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/common_oarchive.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/decl.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/helper_collection.hpp111
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/interface_iarchive.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/interface_oarchive.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/iserializer.hpp216
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/oserializer.hpp28
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/register_archive.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/utf8_codecvt_facet.hpp20
-rw-r--r--3rdParty/Boost/src/boost/archive/dinkumware.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/impl/basic_binary_iarchive.ipp14
-rw-r--r--3rdParty/Boost/src/boost/archive/impl/basic_binary_iprimitive.ipp1
-rw-r--r--3rdParty/Boost/src/boost/archive/impl/basic_binary_oarchive.ipp2
-rw-r--r--3rdParty/Boost/src/boost/archive/impl/basic_binary_oprimitive.ipp1
-rw-r--r--3rdParty/Boost/src/boost/archive/impl/basic_text_iarchive.ipp7
-rw-r--r--3rdParty/Boost/src/boost/archive/impl/basic_text_iprimitive.ipp34
-rw-r--r--3rdParty/Boost/src/boost/archive/impl/basic_text_oarchive.ipp2
-rw-r--r--3rdParty/Boost/src/boost/archive/impl/basic_text_oprimitive.ipp7
-rw-r--r--3rdParty/Boost/src/boost/archive/impl/basic_xml_grammar.hpp7
-rw-r--r--3rdParty/Boost/src/boost/archive/impl/xml_iarchive_impl.ipp6
-rw-r--r--3rdParty/Boost/src/boost/archive/impl/xml_oarchive_impl.ipp2
-rw-r--r--3rdParty/Boost/src/boost/archive/impl/xml_wiarchive_impl.ipp19
-rw-r--r--3rdParty/Boost/src/boost/archive/impl/xml_woarchive_impl.ipp39
-rw-r--r--3rdParty/Boost/src/boost/archive/iterators/base64_from_binary.hpp11
-rw-r--r--3rdParty/Boost/src/boost/archive/iterators/binary_from_base64.hpp9
-rw-r--r--3rdParty/Boost/src/boost/archive/iterators/dataflow_exception.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/iterators/escape.hpp13
-rw-r--r--3rdParty/Boost/src/boost/archive/iterators/insert_linebreaks.hpp6
-rw-r--r--3rdParty/Boost/src/boost/archive/iterators/istream_iterator.hpp30
-rw-r--r--3rdParty/Boost/src/boost/archive/iterators/mb_from_wchar.hpp6
-rw-r--r--3rdParty/Boost/src/boost/archive/iterators/ostream_iterator.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/iterators/remove_whitespace.hpp21
-rw-r--r--3rdParty/Boost/src/boost/archive/iterators/transform_width.hpp153
-rw-r--r--3rdParty/Boost/src/boost/archive/iterators/unescape.hpp18
-rw-r--r--3rdParty/Boost/src/boost/archive/iterators/wchar_from_mb.hpp6
-rw-r--r--3rdParty/Boost/src/boost/archive/iterators/xml_escape.hpp5
-rw-r--r--3rdParty/Boost/src/boost/archive/iterators/xml_unescape.hpp10
-rw-r--r--3rdParty/Boost/src/boost/archive/polymorphic_iarchive.hpp15
-rw-r--r--3rdParty/Boost/src/boost/archive/polymorphic_oarchive.hpp4
-rw-r--r--3rdParty/Boost/src/boost/archive/shared_ptr_helper.hpp219
-rw-r--r--3rdParty/Boost/src/boost/archive/text_iarchive.hpp44
-rw-r--r--3rdParty/Boost/src/boost/archive/text_oarchive.hpp22
-rw-r--r--3rdParty/Boost/src/boost/archive/text_wiarchive.hpp43
-rw-r--r--3rdParty/Boost/src/boost/archive/text_woarchive.hpp22
-rw-r--r--3rdParty/Boost/src/boost/archive/wcslen.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/xml_archive_exception.hpp2
-rw-r--r--3rdParty/Boost/src/boost/archive/xml_iarchive.hpp46
-rw-r--r--3rdParty/Boost/src/boost/archive/xml_oarchive.hpp22
-rw-r--r--3rdParty/Boost/src/boost/archive/xml_wiarchive.hpp45
-rw-r--r--3rdParty/Boost/src/boost/archive/xml_woarchive.hpp23
85 files changed, 869 insertions, 959 deletions
diff --git a/3rdParty/Boost/src/boost/archive/add_facet.hpp b/3rdParty/Boost/src/boost/archive/add_facet.hpp
index 6bafe9b..242bdd9 100644
--- a/3rdParty/Boost/src/boost/archive/add_facet.hpp
+++ b/3rdParty/Boost/src/boost/archive/add_facet.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/archive_exception.hpp b/3rdParty/Boost/src/boost/archive/archive_exception.hpp
index b5f33f6..ffb430c 100644
--- a/3rdParty/Boost/src/boost/archive/archive_exception.hpp
+++ b/3rdParty/Boost/src/boost/archive/archive_exception.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -44,9 +44,11 @@ class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) archive_exception :
public virtual std::exception
{
+protected:
+ char m_buffer[128];
public:
typedef enum {
no_exception, // initialized without code
other_exception, // any excepton not listed below
- unregistered_class, // attempt to serialize a pointer of an
+ unregistered_class, // attempt to serialize a pointer of
// an unregistered class
invalid_signature, // first line of archive does not contain
@@ -56,6 +58,6 @@ public:
pointer_conflict, // an attempt has been made to directly
// serialize an object which has
- // already been serialzed through a pointer.
- // Were this permited, the archive load would result
+ // already been serialized through a pointer.
+ // Were this permitted, the archive load would result
// in the creation of an extra copy of the obect.
incompatible_native_format, // attempt to read native binary format
@@ -69,5 +71,5 @@ public:
// void_cast_register
unsupported_class_version, // type saved with a version # greater than the
- // one used by the program. This indicates that the proggram
+ // one used by the program. This indicates that the program
// needs to be rebuilt.
multiple_code_instantiation, // code for implementing serialization for some
@@ -75,6 +77,4 @@ public:
output_stream_error // error on input stream
} exception_code;
-protected:
- std::string m_msg;
public:
exception_code code;
@@ -84,7 +84,9 @@ public:
const char * e2 = NULL
);
- ~archive_exception() throw ();
- virtual const char *what( ) const throw();
+ virtual ~archive_exception() throw();
+ virtual const char *what() const throw();
protected:
+ unsigned int
+ append(unsigned int l, const char * a);
archive_exception();
};
diff --git a/3rdParty/Boost/src/boost/archive/basic_archive.hpp b/3rdParty/Boost/src/boost/archive/basic_archive.hpp
index c5ac880..0412112 100644
--- a/3rdParty/Boost/src/boost/archive/basic_archive.hpp
+++ b/3rdParty/Boost/src/boost/archive/basic_archive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -16,5 +16,5 @@
// See http://www.boost.org for updates, documentation, and revision history.
-
+#include <cstring> // count
#include <boost/assert.hpp>
#include <boost/config.hpp>
@@ -222,4 +222,7 @@ struct class_name_type :
return t;
}
+ std::size_t size() const {
+ return std::strlen(t);
+ }
explicit class_name_type(const char *key_)
: t(const_cast<char *>(key_)){}
diff --git a/3rdParty/Boost/src/boost/archive/basic_binary_iarchive.hpp b/3rdParty/Boost/src/boost/archive/basic_binary_iarchive.hpp
index d851dab..a649d5e 100644
--- a/3rdParty/Boost/src/boost/archive/basic_binary_iarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/basic_binary_iarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -45,4 +45,8 @@ namespace boost {
namespace archive {
+namespace detail {
+ template<class Archive> class interface_iarchive;
+} // namespace detail
+
/////////////////////////////////////////////////////////////////////////
// class basic_binary_iarchive - read serialized objects from a input binary stream
@@ -51,13 +55,15 @@ class basic_binary_iarchive :
public detail::common_iarchive<Archive>
{
-protected:
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
-#elif defined(BOOST_MSVC)
- // for some inexplicable reason insertion of "class" generates compile erro
- // on msvc 7.1
- friend detail::interface_iarchive<Archive>;
#else
- friend class detail::interface_iarchive<Archive>;
+protected:
+ #if BOOST_WORKAROUND(BOOST_MSVC, < 1500)
+ // for some inexplicable reason insertion of "class" generates compile erro
+ // on msvc 7.1
+ friend detail::interface_iarchive<Archive>;
+ #else
+ friend class detail::interface_iarchive<Archive>;
+ #endif
#endif
// intermediate level to support override of operators
diff --git a/3rdParty/Boost/src/boost/archive/basic_binary_iprimitive.hpp b/3rdParty/Boost/src/boost/archive/basic_binary_iprimitive.hpp
index fc27123..2e72a1c 100644
--- a/3rdParty/Boost/src/boost/archive/basic_binary_iprimitive.hpp
+++ b/3rdParty/Boost/src/boost/archive/basic_binary_iprimitive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -127,5 +127,5 @@ public:
#if defined(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS)
struct apply {
- typedef BOOST_DEDUCED_TYPENAME boost::serialization::is_bitwise_serializable< T >::type type;
+ typedef typename boost::serialization::is_bitwise_serializable< T >::type type;
};
#else
@@ -179,5 +179,5 @@ basic_binary_iprimitive<Archive, Elem, Tr>::load_binary(
archive_exception(archive_exception::input_stream_error)
);
- std::memcpy(static_cast<char*>(address) + (count - s), &t, s);
+ std::memcpy(static_cast<char*>(address) + (count - s), &t, static_cast<std::size_t>(s));
}
}
diff --git a/3rdParty/Boost/src/boost/archive/basic_binary_oarchive.hpp b/3rdParty/Boost/src/boost/archive/basic_binary_oarchive.hpp
index 01622b9..f8b53e9 100644
--- a/3rdParty/Boost/src/boost/archive/basic_binary_oarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/basic_binary_oarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -47,4 +47,8 @@ namespace boost {
namespace archive {
+namespace detail {
+ template<class Archive> class interface_oarchive;
+} // namespace detail
+
//////////////////////////////////////////////////////////////////////
// class basic_binary_oarchive - write serialized objects to a binary output stream
@@ -59,13 +63,15 @@ class basic_binary_oarchive :
public archive::detail::common_oarchive<Archive>
{
-protected:
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
-#elif defined(BOOST_MSVC)
- // for some inexplicable reason insertion of "class" generates compile erro
- // on msvc 7.1
- friend detail::interface_oarchive<Archive>;
#else
- friend class detail::interface_oarchive<Archive>;
+protected:
+ #if BOOST_WORKAROUND(BOOST_MSVC, < 1500)
+ // for some inexplicable reason insertion of "class" generates compile erro
+ // on msvc 7.1
+ friend detail::interface_oarchive<Archive>;
+ #else
+ friend class detail::interface_oarchive<Archive>;
+ #endif
#endif
// any datatype not specifed below will be handled by base class
diff --git a/3rdParty/Boost/src/boost/archive/basic_binary_oprimitive.hpp b/3rdParty/Boost/src/boost/archive/basic_binary_oprimitive.hpp
index 53e44e4..ba070cd 100644
--- a/3rdParty/Boost/src/boost/archive/basic_binary_oprimitive.hpp
+++ b/3rdParty/Boost/src/boost/archive/basic_binary_oprimitive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -59,6 +59,5 @@ namespace archive {
template<class Archive, class Elem, class Tr>
-class basic_binary_oprimitive
-{
+class basic_binary_oprimitive {
#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
friend class save_access;
@@ -123,5 +122,5 @@ public:
#if defined(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS)
struct apply {
- typedef BOOST_DEDUCED_TYPENAME boost::serialization::is_bitwise_serializable< T >::type type;
+ typedef typename boost::serialization::is_bitwise_serializable< T >::type type;
};
#else
@@ -171,5 +170,5 @@ basic_binary_oprimitive<Archive, Elem, Tr>::save_binary(
);
//os.write(
- // static_cast<const BOOST_DEDUCED_TYPENAME OStream::char_type *>(address),
+ // static_cast<const typename OStream::char_type *>(address),
// count
//);
diff --git a/3rdParty/Boost/src/boost/archive/basic_streambuf_locale_saver.hpp b/3rdParty/Boost/src/boost/archive/basic_streambuf_locale_saver.hpp
index ca764e1..6bf8f71 100644
--- a/3rdParty/Boost/src/boost/archive/basic_streambuf_locale_saver.hpp
+++ b/3rdParty/Boost/src/boost/archive/basic_streambuf_locale_saver.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -51,5 +51,5 @@ public:
: s_save_( s ), a_save_( s.getloc() )
{}
- basic_streambuf_locale_saver( state_type &s, aspect_type const &a )
+ explicit basic_streambuf_locale_saver( state_type &s, aspect_type const &a )
: s_save_( s ), a_save_( s.pubimbue(a) )
{}
diff --git a/3rdParty/Boost/src/boost/archive/basic_text_iarchive.hpp b/3rdParty/Boost/src/boost/archive/basic_text_iarchive.hpp
index 729d51a..0e78ff6 100644
--- a/3rdParty/Boost/src/boost/archive/basic_text_iarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/basic_text_iarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -41,4 +41,8 @@ namespace boost {
namespace archive {
+namespace detail {
+ template<class Archive> class interface_iarchive;
+} // namespace detail
+
/////////////////////////////////////////////////////////////////////////
// class basic_text_iarchive - read serialized objects from a input text stream
@@ -47,13 +51,15 @@ class basic_text_iarchive :
public detail::common_iarchive<Archive>
{
-protected:
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
-#elif defined(BOOST_MSVC)
- // for some inexplicable reason insertion of "class" generates compile erro
- // on msvc 7.1
- friend detail::interface_iarchive<Archive>;
#else
- friend class detail::interface_iarchive<Archive>;
+protected:
+ #if BOOST_WORKAROUND(BOOST_MSVC, < 1500)
+ // for some inexplicable reason insertion of "class" generates compile erro
+ // on msvc 7.1
+ friend detail::interface_iarchive<Archive>;
+ #else
+ friend class detail::interface_iarchive<Archive>;
+ #endif
#endif
// intermediate level to support override of operators
diff --git a/3rdParty/Boost/src/boost/archive/basic_text_iprimitive.hpp b/3rdParty/Boost/src/boost/archive/basic_text_iprimitive.hpp
index b927ec9..dabc3c8 100644
--- a/3rdParty/Boost/src/boost/archive/basic_text_iprimitive.hpp
+++ b/3rdParty/Boost/src/boost/archive/basic_text_iprimitive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -65,11 +65,6 @@ namespace archive {
template<class IStream>
-class basic_text_iprimitive
-{
-#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+class basic_text_iprimitive {
protected:
-#else
-public:
-#endif
IStream &is;
io::ios_flags_saver flags_saver;
@@ -79,6 +74,6 @@ public:
boost::scoped_ptr<std::locale> archive_locale;
basic_streambuf_locale_saver<
- BOOST_DEDUCED_TYPENAME IStream::char_type,
- BOOST_DEDUCED_TYPENAME IStream::traits_type
+ typename IStream::char_type,
+ typename IStream::traits_type
> locale_saver;
#endif
@@ -87,8 +82,6 @@ public:
void load(T & t)
{
- if(! is.fail()){
- is >> t;
+ if(is >> t)
return;
- }
boost::serialization::throw_exception(
archive_exception(archive_exception::input_stream_error)
diff --git a/3rdParty/Boost/src/boost/archive/basic_text_oarchive.hpp b/3rdParty/Boost/src/boost/archive/basic_text_oarchive.hpp
index dd10f65..bed9cd3 100644
--- a/3rdParty/Boost/src/boost/archive/basic_text_oarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/basic_text_oarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -43,4 +43,8 @@ namespace boost {
namespace archive {
+namespace detail {
+ template<class Archive> class interface_oarchive;
+} // namespace detail
+
/////////////////////////////////////////////////////////////////////////
// class basic_text_oarchive
@@ -49,15 +53,17 @@ class basic_text_oarchive :
public detail::common_oarchive<Archive>
{
-protected:
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
-|| BOOST_WORKAROUND(__BORLANDC__,BOOST_TESTED_AT(0x560))
+#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
-#elif defined(BOOST_MSVC)
- // for some inexplicable reason insertion of "class" generates compile erro
- // on msvc 7.1
- friend detail::interface_oarchive<Archive>;
#else
- friend class detail::interface_oarchive<Archive>;
+protected:
+ #if BOOST_WORKAROUND(BOOST_MSVC, < 1500)
+ // for some inexplicable reason insertion of "class" generates compile erro
+ // on msvc 7.1
+ friend detail::interface_oarchive<Archive>;
+ #else
+ friend class detail::interface_oarchive<Archive>;
+ #endif
#endif
+
enum {
none,
diff --git a/3rdParty/Boost/src/boost/archive/basic_text_oprimitive.hpp b/3rdParty/Boost/src/boost/archive/basic_text_oprimitive.hpp
index 06885ad..73a0a62 100644
--- a/3rdParty/Boost/src/boost/archive/basic_text_oprimitive.hpp
+++ b/3rdParty/Boost/src/boost/archive/basic_text_oprimitive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -27,5 +27,4 @@
#include <iomanip>
#include <locale>
-#include <boost/config/no_tr1/cmath.hpp> // isnan
#include <boost/assert.hpp>
#include <cstddef> // size_t
@@ -34,4 +33,6 @@
#include <boost/static_assert.hpp>
#include <boost/detail/workaround.hpp>
+#include <boost/io/ios_state.hpp>
+
#if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1)
#include <boost/archive/dinkumware.hpp>
@@ -47,4 +48,6 @@ namespace std{
#endif
+#include <boost/type_traits/is_floating_point.hpp>
+#include <boost/mpl/bool.hpp>
#include <boost/limits.hpp>
#include <boost/integer.hpp>
@@ -66,9 +69,5 @@ template<class OStream>
class basic_text_oprimitive
{
-#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
protected:
-#else
-public:
-#endif
OStream &os;
io::ios_flags_saver flags_saver;
@@ -78,19 +77,9 @@ public:
boost::scoped_ptr<std::locale> archive_locale;
basic_streambuf_locale_saver<
- BOOST_DEDUCED_TYPENAME OStream::char_type,
- BOOST_DEDUCED_TYPENAME OStream::traits_type
+ typename OStream::char_type,
+ typename OStream::traits_type
> locale_saver;
#endif
- // default saving of primitives.
- template<class T>
- void save(const T &t){
- if(os.fail())
- boost::serialization::throw_exception(
- archive_exception(archive_exception::output_stream_error)
- );
- os << t;
- }
-
/////////////////////////////////////////////////////////
// fundamental types that need special treatment
@@ -124,16 +113,40 @@ public:
}
#endif
- void save(const float t)
- {
- // must be a user mistake - can't serialize un-initialized data
+
+ /////////////////////////////////////////////////////////
+ // saving of any types not listed above
+
+ template<class T>
+ void save_impl(const T &t, boost::mpl::bool_<false> &){
if(os.fail())
boost::serialization::throw_exception(
archive_exception(archive_exception::output_stream_error)
);
- os << std::setprecision(std::numeric_limits<float>::digits10 + 2);
os << t;
}
- void save(const double t)
- {
+
+ /////////////////////////////////////////////////////////
+ // floating point types need even more special treatment
+ // the following determines whether the type T is some sort
+ // of floating point type. Note that we then assume that
+ // the stream << operator is defined on that type - if not
+ // we'll get a compile time error. This is meant to automatically
+ // support synthesized types which support floating point
+ // operations. Also it should handle compiler dependent types
+ // such long double. Due to John Maddock.
+
+ template<class T>
+ struct is_float {
+ typedef typename mpl::bool_<
+ boost::is_floating_point<T>::value
+ || (std::numeric_limits<T>::is_specialized
+ && !std::numeric_limits<T>::is_integer
+ && !std::numeric_limits<T>::is_exact
+ && std::numeric_limits<T>::max_exponent)
+ >::type type;
+ };
+
+ template<class T>
+ void save_impl(const T &t, boost::mpl::bool_<true> &){
// must be a user mistake - can't serialize un-initialized data
if(os.fail())
@@ -141,7 +154,27 @@ public:
archive_exception(archive_exception::output_stream_error)
);
- os << std::setprecision(std::numeric_limits<double>::digits10 + 2);
- os << t;
+ // The formulae for the number of decimla digits required is given in
+ // http://www2.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1822.pdf
+ // which is derived from Kahan's paper:
+ // www.eecs.berkeley.edu/~wkahan/ieee754status/ieee754.ps
+ // const unsigned int digits = (std::numeric_limits<T>::digits * 3010) / 10000;
+ // note: I've commented out the above because I didn't get good results. e.g.
+ // in one case I got a difference of 19 units.
+ #ifndef BOOST_NO_CXX11_NUMERIC_LIMITS
+ const unsigned int digits = std::numeric_limits<T>::max_digits10;
+ #else
+ const unsigned int digits = std::numeric_limits<T>::digits10 + 2;
+ #endif
+ os << std::setprecision(digits) << std::scientific << t;
}
+
+ template<class T>
+ void save(const T & t){
+ boost::io::ios_flags_saver fs(os);
+ boost::io::ios_precision_saver ps(os);
+ typename is_float<T>::type tf;
+ save_impl(t, tf);
+ }
+
BOOST_ARCHIVE_OR_WARCHIVE_DECL(BOOST_PP_EMPTY())
basic_text_oprimitive(OStream & os, bool no_codecvt);
@@ -150,5 +183,5 @@ public:
public:
// unformatted append of one character
- void put(BOOST_DEDUCED_TYPENAME OStream::char_type c){
+ void put(typename OStream::char_type c){
if(os.fail())
boost::serialization::throw_exception(
diff --git a/3rdParty/Boost/src/boost/archive/basic_xml_archive.hpp b/3rdParty/Boost/src/boost/archive/basic_xml_archive.hpp
index c99d94f..a4ad3a2 100644
--- a/3rdParty/Boost/src/boost/archive/basic_xml_archive.hpp
+++ b/3rdParty/Boost/src/boost/archive/basic_xml_archive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/basic_xml_iarchive.hpp b/3rdParty/Boost/src/boost/archive/basic_xml_iarchive.hpp
index d7b8bfd..5047fef 100644
--- a/3rdParty/Boost/src/boost/archive/basic_xml_iarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/basic_xml_iarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -38,4 +38,8 @@ namespace boost {
namespace archive {
+namespace detail {
+ template<class Archive> class interface_iarchive;
+} // namespace detail
+
/////////////////////////////////////////////////////////////////////////
// class xml_iarchive - read serialized objects from a input text stream
@@ -44,13 +48,15 @@ class basic_xml_iarchive :
public detail::common_iarchive<Archive>
{
-protected:
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
-#elif defined(BOOST_MSVC)
- // for some inexplicable reason insertion of "class" generates compile erro
- // on msvc 7.1
- friend detail::interface_oarchive<Archive>;
#else
- friend class detail::interface_oarchive<Archive>;
+protected:
+ #if BOOST_WORKAROUND(BOOST_MSVC, < 1500)
+ // for some inexplicable reason insertion of "class" generates compile erro
+ // on msvc 7.1
+ friend detail::interface_iarchive<Archive>;
+ #else
+ friend class detail::interface_iarchive<Archive>;
+ #endif
#endif
unsigned int depth;
diff --git a/3rdParty/Boost/src/boost/archive/basic_xml_oarchive.hpp b/3rdParty/Boost/src/boost/archive/basic_xml_oarchive.hpp
index b571372..c986833 100644
--- a/3rdParty/Boost/src/boost/archive/basic_xml_oarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/basic_xml_oarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -37,4 +37,8 @@ namespace boost {
namespace archive {
+namespace detail {
+ template<class Archive> class interface_oarchive;
+} // namespace detail
+
//////////////////////////////////////////////////////////////////////
// class basic_xml_oarchive - write serialized objects to a xml output stream
@@ -43,16 +47,17 @@ class basic_xml_oarchive :
public detail::common_oarchive<Archive>
{
-protected:
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
+#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
-#elif defined(BOOST_MSVC)
+#else
+protected:
+#endif
+#if BOOST_WORKAROUND(BOOST_MSVC, < 1500)
// for some inexplicable reason insertion of "class" generates compile erro
// on msvc 7.1
friend detail::interface_oarchive<Archive>;
- friend class save_access;
#else
friend class detail::interface_oarchive<Archive>;
- friend class save_access;
#endif
+ friend class save_access;
// special stuff for xml output
unsigned int depth;
diff --git a/3rdParty/Boost/src/boost/archive/binary_iarchive.hpp b/3rdParty/Boost/src/boost/archive/binary_iarchive.hpp
index 638d996..ce67cca 100644
--- a/3rdParty/Boost/src/boost/archive/binary_iarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/binary_iarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -26,42 +26,5 @@
#endif
-namespace boost {
-namespace archive {
-
-// do not derive from the classes below. If you want to extend this functionality
-// via inhertance, derived from text_iarchive_impl instead. This will
-// preserve correct static polymorphism.
-
-// same as binary_iarchive below - without the shared_ptr_helper
-class naked_binary_iarchive :
- public binary_iarchive_impl<
- boost::archive::naked_binary_iarchive,
- std::istream::char_type,
- std::istream::traits_type
- >
-{
-public:
- naked_binary_iarchive(std::istream & is, unsigned int flags = 0) :
- binary_iarchive_impl<
- naked_binary_iarchive, std::istream::char_type, std::istream::traits_type
- >(is, flags)
- {}
- naked_binary_iarchive(std::streambuf & bsb, unsigned int flags = 0) :
- binary_iarchive_impl<
- naked_binary_iarchive, std::istream::char_type, std::istream::traits_type
- >(bsb, flags)
- {}
-};
-
-} // namespace archive
-} // namespace boost
-
-// note special treatment of shared_ptr. This type needs a special
-// structure associated with every archive. We created a "mix-in"
-// class to provide this functionality. Since shared_ptr holds a
-// special esteem in the boost library - we included it here by default.
-#include <boost/archive/shared_ptr_helper.hpp>
-
-namespace boost {
+namespace boost {
namespace archive {
@@ -74,7 +37,5 @@ class binary_iarchive :
std::istream::char_type,
std::istream::traits_type
- >,
- public detail::shared_ptr_helper
-{
+ >{
public:
binary_iarchive(std::istream & is, unsigned int flags = 0) :
diff --git a/3rdParty/Boost/src/boost/archive/binary_iarchive_impl.hpp b/3rdParty/Boost/src/boost/archive/binary_iarchive_impl.hpp
index 32c476d..a9afe61 100644
--- a/3rdParty/Boost/src/boost/archive/binary_iarchive_impl.hpp
+++ b/3rdParty/Boost/src/boost/archive/binary_iarchive_impl.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -30,4 +30,8 @@ namespace boost {
namespace archive {
+namespace detail {
+ template<class Archive> class interface_iarchive;
+} // namespace detail
+
template<class Archive, class Elem, class Tr>
class binary_iarchive_impl :
@@ -38,8 +42,16 @@ class binary_iarchive_impl :
public:
#else
- friend class detail::interface_iarchive<Archive>;
- friend class basic_binary_iarchive<Archive>;
- friend class load_access;
protected:
+ #if BOOST_WORKAROUND(BOOST_MSVC, < 1500)
+ // for some inexplicable reason insertion of "class" generates compile erro
+ // on msvc 7.1
+ friend detail::interface_iarchive<Archive>;
+ friend basic_binary_iarchive<Archive>;
+ friend load_access;
+ #else
+ friend class detail::interface_iarchive<Archive>;
+ friend class basic_binary_iarchive<Archive>;
+ friend class load_access;
+ #endif
#endif
// note: the following should not needed - but one compiler (vc 7.1)
diff --git a/3rdParty/Boost/src/boost/archive/binary_oarchive.hpp b/3rdParty/Boost/src/boost/archive/binary_oarchive.hpp
index 2aac14f..89a86da 100644
--- a/3rdParty/Boost/src/boost/archive/binary_oarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/binary_oarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -51,6 +51,4 @@ public:
};
-typedef binary_oarchive naked_binary_oarchive;
-
} // namespace archive
} // namespace boost
diff --git a/3rdParty/Boost/src/boost/archive/binary_oarchive_impl.hpp b/3rdParty/Boost/src/boost/archive/binary_oarchive_impl.hpp
index 7ca773b..a8c9733 100644
--- a/3rdParty/Boost/src/boost/archive/binary_oarchive_impl.hpp
+++ b/3rdParty/Boost/src/boost/archive/binary_oarchive_impl.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -31,4 +31,8 @@ namespace boost {
namespace archive {
+namespace detail {
+ template<class Archive> class interface_oarchive;
+} // namespace detail
+
template<class Archive, class Elem, class Tr>
class binary_oarchive_impl :
@@ -39,8 +43,16 @@ class binary_oarchive_impl :
public:
#else
- friend class detail::interface_oarchive<Archive>;
- friend class basic_binary_oarchive<Archive>;
- friend class save_access;
protected:
+ #if BOOST_WORKAROUND(BOOST_MSVC, < 1500)
+ // for some inexplicable reason insertion of "class" generates compile erro
+ // on msvc 7.1
+ friend detail::interface_oarchive<Archive>;
+ friend basic_binary_oarchive<Archive>;
+ friend save_access;
+ #else
+ friend class detail::interface_oarchive<Archive>;
+ friend class basic_binary_oarchive<Archive>;
+ friend class save_access;
+ #endif
#endif
// note: the following should not needed - but one compiler (vc 7.1)
diff --git a/3rdParty/Boost/src/boost/archive/binary_wiarchive.hpp b/3rdParty/Boost/src/boost/archive/binary_wiarchive.hpp
index b5f6a71..775d8f8 100644
--- a/3rdParty/Boost/src/boost/archive/binary_wiarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/binary_wiarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -29,41 +29,4 @@ namespace boost {
namespace archive {
-// same as binary_wiarchive below - without the shared_ptr_helper
-class naked_binary_wiarchive :
- public binary_iarchive_impl<
- boost::archive::naked_binary_wiarchive,
- std::wistream::char_type,
- std::wistream::traits_type
- >
-{
-public:
- naked_binary_wiarchive(std::wistream & is, unsigned int flags = 0) :
- binary_iarchive_impl<
- naked_binary_wiarchive,
- std::wistream::char_type,
- std::wistream::traits_type
- >(is, flags)
- {}
- naked_binary_wiarchive(std::wstreambuf & bsb, unsigned int flags = 0) :
- binary_iarchive_impl<
- naked_binary_wiarchive,
- std::wistream::char_type,
- std::wistream::traits_type
- >(bsb, flags)
- {}
-};
-
-} // namespace archive
-} // namespace boost
-
-// note special treatment of shared_ptr. This type needs a special
-// structure associated with every archive. We created a "mix-in"
-// class to provide this functionality. Since shared_ptr holds a
-// special esteem in the boost library - we included it here by default.
-#include <boost/archive/shared_ptr_helper.hpp>
-
-namespace boost {
-namespace archive {
-
class binary_wiarchive :
public binary_iarchive_impl<
diff --git a/3rdParty/Boost/src/boost/archive/binary_woarchive.hpp b/3rdParty/Boost/src/boost/archive/binary_woarchive.hpp
index 2075dac..a8817d6 100644
--- a/3rdParty/Boost/src/boost/archive/binary_woarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/binary_woarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -50,6 +50,4 @@ public:
};
-typedef binary_woarchive naked_binary_woarchive;
-
} // namespace archive
} // namespace boost
diff --git a/3rdParty/Boost/src/boost/archive/codecvt_null.hpp b/3rdParty/Boost/src/boost/archive/codecvt_null.hpp
index 910b261..caeefee 100644
--- a/3rdParty/Boost/src/boost/archive/codecvt_null.hpp
+++ b/3rdParty/Boost/src/boost/archive/codecvt_null.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/detail/archive_serializer_map.hpp b/3rdParty/Boost/src/boost/archive/detail/archive_serializer_map.hpp
index 6d2eec4..53fcae4 100644
--- a/3rdParty/Boost/src/boost/archive/detail/archive_serializer_map.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/archive_serializer_map.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/detail/auto_link_archive.hpp b/3rdParty/Boost/src/boost/archive/detail/auto_link_archive.hpp
index 05956f0..79b0e49 100644
--- a/3rdParty/Boost/src/boost/archive/detail/auto_link_archive.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/auto_link_archive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/detail/auto_link_warchive.hpp b/3rdParty/Boost/src/boost/archive/detail/auto_link_warchive.hpp
index 4d4efcd..683d191 100644
--- a/3rdParty/Boost/src/boost/archive/detail/auto_link_warchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/auto_link_warchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/detail/basic_iarchive.hpp b/3rdParty/Boost/src/boost/archive/detail/basic_iarchive.hpp
index f62987e..fdafbbf 100644
--- a/3rdParty/Boost/src/boost/archive/detail/basic_iarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/basic_iarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -23,8 +23,8 @@
#include <boost/noncopyable.hpp>
-#include <boost/type_traits/broken_compiler_spec.hpp>
#include <boost/serialization/tracking_enum.hpp>
#include <boost/archive/basic_archive.hpp>
#include <boost/archive/detail/decl.hpp>
+#include <boost/archive/detail/helper_collection.hpp>
#include <boost/archive/detail/abi_prefix.hpp> // must be the last header
@@ -43,5 +43,6 @@ class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_pointer_iserializer;
// class basic_iarchive - read serialized objects from a input stream
class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_iarchive :
- private boost::noncopyable
+ private boost::noncopyable,
+ public boost::archive::detail::helper_collection
{
friend class basic_iarchive_impl;
@@ -100,10 +101,4 @@ public:
} // namespace boost
-// required by smart_cast for compilers not implementing
-// partial template specialization
-BOOST_TT_BROKEN_COMPILER_SPEC(
- boost::archive::detail::basic_iarchive
-)
-
#include <boost/archive/detail/abi_suffix.hpp> // pops abi_suffix.hpp pragmas
diff --git a/3rdParty/Boost/src/boost/archive/detail/basic_iserializer.hpp b/3rdParty/Boost/src/boost/archive/detail/basic_iserializer.hpp
index 2f4f6d8..3bff3e1 100644
--- a/3rdParty/Boost/src/boost/archive/detail/basic_iserializer.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/basic_iserializer.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/detail/basic_oarchive.hpp b/3rdParty/Boost/src/boost/archive/detail/basic_oarchive.hpp
index 402e569..f65d110 100644
--- a/3rdParty/Boost/src/boost/archive/detail/basic_oarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/basic_oarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -21,6 +21,4 @@
#include <boost/noncopyable.hpp>
-#include <boost/type_traits/broken_compiler_spec.hpp>
-
// can't use this - much as I'd like to as borland doesn't support it
// #include <boost/scoped_ptr.hpp>
@@ -28,5 +26,5 @@
#include <boost/archive/basic_archive.hpp>
#include <boost/serialization/tracking_enum.hpp>
-
+#include <boost/archive/detail/helper_collection.hpp>
#include <boost/archive/detail/abi_prefix.hpp> // must be the last header
@@ -42,8 +40,10 @@ class basic_oarchive_impl;
class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_oserializer;
class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) basic_pointer_oserializer;
+
//////////////////////////////////////////////////////////////////////
// class basic_oarchive - write serialized objects to an output stream
class BOOST_ARCHIVE_OR_WARCHIVE_DECL(BOOST_PP_EMPTY()) basic_oarchive :
- private boost::noncopyable
+ private boost::noncopyable,
+ public boost::archive::detail::helper_collection
{
friend class basic_oarchive_impl;
@@ -96,10 +96,4 @@ public:
} // namespace boost
-// required by smart_cast for compilers not implementing
-// partial template specialization
-BOOST_TT_BROKEN_COMPILER_SPEC(
- boost::archive::detail::basic_oarchive
-)
-
#include <boost/archive/detail/abi_suffix.hpp> // pops abi_suffix.hpp pragmas
diff --git a/3rdParty/Boost/src/boost/archive/detail/basic_oserializer.hpp b/3rdParty/Boost/src/boost/archive/detail/basic_oserializer.hpp
index 74af7e6..6ae063f 100644
--- a/3rdParty/Boost/src/boost/archive/detail/basic_oserializer.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/basic_oserializer.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/detail/basic_pointer_iserializer.hpp b/3rdParty/Boost/src/boost/archive/detail/basic_pointer_iserializer.hpp
index d957b83..86badc1 100644
--- a/3rdParty/Boost/src/boost/archive/detail/basic_pointer_iserializer.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/basic_pointer_iserializer.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -53,8 +53,9 @@ protected:
~basic_pointer_iserializer();
public:
+ virtual void * heap_allocation() const = 0;
virtual const basic_iserializer & get_basic_serializer() const = 0;
virtual void load_object_ptr(
basic_iarchive & ar,
- void * & x,
+ void * x,
const unsigned int file_version
) const = 0;
diff --git a/3rdParty/Boost/src/boost/archive/detail/basic_pointer_oserializer.hpp b/3rdParty/Boost/src/boost/archive/detail/basic_pointer_oserializer.hpp
index b0d3fb9..bafc46a 100644
--- a/3rdParty/Boost/src/boost/archive/detail/basic_pointer_oserializer.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/basic_pointer_oserializer.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/detail/basic_serializer.hpp b/3rdParty/Boost/src/boost/archive/detail/basic_serializer.hpp
index 5dbd886..c7d3b4b 100644
--- a/3rdParty/Boost/src/boost/archive/detail/basic_serializer.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/basic_serializer.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/detail/basic_serializer_map.hpp b/3rdParty/Boost/src/boost/archive/detail/basic_serializer_map.hpp
index a991ea1..202c20e 100644
--- a/3rdParty/Boost/src/boost/archive/detail/basic_serializer_map.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/basic_serializer_map.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/detail/check.hpp b/3rdParty/Boost/src/boost/archive/detail/check.hpp
index c9cba51..10034e7 100644
--- a/3rdParty/Boost/src/boost/archive/detail/check.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/check.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#pragma inline_depth(511)
@@ -51,5 +51,5 @@ template<class T>
inline void check_object_level(){
typedef
- BOOST_DEDUCED_TYPENAME mpl::greater_equal<
+ typename mpl::greater_equal<
serialization::implementation_level< T >,
mpl::int_<serialization::primitive_type>
@@ -64,10 +64,10 @@ template<class T>
inline void check_object_versioning(){
typedef
- BOOST_DEDUCED_TYPENAME mpl::or_<
- BOOST_DEDUCED_TYPENAME mpl::greater<
+ typename mpl::or_<
+ typename mpl::greater<
serialization::implementation_level< T >,
mpl::int_<serialization::object_serializable>
>,
- BOOST_DEDUCED_TYPENAME mpl::equal_to<
+ typename mpl::equal_to<
serialization::version< T >,
mpl::int_<0>
@@ -84,5 +84,5 @@ inline void check_object_tracking(){
// T is not a const
BOOST_STATIC_ASSERT(! boost::is_const< T >::value);
- typedef BOOST_DEDUCED_TYPENAME mpl::equal_to<
+ typedef typename mpl::equal_to<
serialization::tracking_level< T >,
mpl::int_<serialization::track_never>
@@ -106,11 +106,11 @@ inline void check_pointer_level(){
// has been used as a pointer!!
typedef
- BOOST_DEDUCED_TYPENAME mpl::or_<
- BOOST_DEDUCED_TYPENAME mpl::greater<
+ typename mpl::or_<
+ typename mpl::greater<
serialization::implementation_level< T >,
mpl::int_<serialization::object_serializable>
>,
- BOOST_DEDUCED_TYPENAME mpl::not_<
- BOOST_DEDUCED_TYPENAME mpl::equal_to<
+ typename mpl::not_<
+ typename mpl::equal_to<
serialization::tracking_level< T >,
mpl::int_<serialization::track_selectively>
@@ -140,5 +140,5 @@ inline void check_pointer_level(){
template<class T>
void inline check_pointer_tracking(){
- typedef BOOST_DEDUCED_TYPENAME mpl::greater<
+ typedef typename mpl::greater<
serialization::tracking_level< T >,
mpl::int_<serialization::track_never>
@@ -152,8 +152,8 @@ template<class T>
inline void check_const_loading(){
typedef
- BOOST_DEDUCED_TYPENAME mpl::or_<
- BOOST_DEDUCED_TYPENAME boost::serialization::is_wrapper< T >,
- BOOST_DEDUCED_TYPENAME mpl::not_<
- BOOST_DEDUCED_TYPENAME boost::is_const< T >
+ typename mpl::or_<
+ typename boost::serialization::is_wrapper< T >,
+ typename mpl::not_<
+ typename boost::is_const< T >
>
>::type typex;
diff --git a/3rdParty/Boost/src/boost/archive/detail/common_iarchive.hpp b/3rdParty/Boost/src/boost/archive/detail/common_iarchive.hpp
index 54c07c3..45e6d34 100644
--- a/3rdParty/Boost/src/boost/archive/detail/common_iarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/common_iarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/detail/common_oarchive.hpp b/3rdParty/Boost/src/boost/archive/detail/common_oarchive.hpp
index 7962063..0d7474b 100644
--- a/3rdParty/Boost/src/boost/archive/detail/common_oarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/common_oarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/detail/decl.hpp b/3rdParty/Boost/src/boost/archive/detail/decl.hpp
index 9695001..44e22be 100644
--- a/3rdParty/Boost/src/boost/archive/detail/decl.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/decl.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/detail/helper_collection.hpp b/3rdParty/Boost/src/boost/archive/detail/helper_collection.hpp
new file mode 100644
index 0000000..ba3c60c
--- /dev/null
+++ b/3rdParty/Boost/src/boost/archive/detail/helper_collection.hpp
@@ -0,0 +1,111 @@
+#ifndef BOOST_ARCHIVE_DETAIL_HELPER_COLLECTION_HPP
+#define BOOST_ARCHIVE_DETAIL_HELPER_COLLECTION_HPP
+
+// MS compatible compilers support #pragma once
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+// helper_collection.hpp: archive support for run-time helpers
+
+// (C) Copyright 2002-2008 Robert Ramey and Joaquin M Lopez Munoz
+// Use, modification and distribution is subject to 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 http://www.boost.org for updates, documentation, and revision history.
+
+#include <cstddef> // NULL
+#include <typeinfo>
+#include <vector>
+#include <utility>
+#include <memory>
+#include <algorithm>
+
+#include <boost/config.hpp>
+
+#ifdef BOOST_NO_CXX11_SMART_PTR
+ #include <boost/smart_ptr/shared_ptr.hpp>
+ #include <boost/smart_ptr/make_shared.hpp>
+#endif
+
+namespace boost {
+
+namespace archive {
+namespace detail {
+
+class helper_collection
+{
+ helper_collection(const helper_collection&); // non-copyable
+ helper_collection& operator = (const helper_collection&); // non-copyable
+
+ // note: we dont' actually "share" the function object pointer
+ // we only use shared_ptr to make sure that it get's deleted
+
+ #ifndef BOOST_NO_CXX11_SMART_PTR
+ typedef std::pair<
+ const std::type_info *,
+ std::shared_ptr<void>
+ > helper_value_type;
+ template<class T>
+ std::shared_ptr<void> make_helper_ptr(){
+ return std::make_shared<T>();
+ }
+ #else
+ typedef std::pair<
+ const std::type_info *,
+ boost::shared_ptr<void>
+ > helper_value_type;
+ template<class T>
+ boost::shared_ptr<void> make_helper_ptr(){
+ return boost::make_shared<T>();
+ }
+ #endif
+ typedef std::vector<helper_value_type> collection;
+ collection m_collection;
+
+ struct predicate {
+ const std::type_info * m_ti;
+ bool operator()(helper_value_type const &rhs) const {
+ return *m_ti == *rhs.first;
+ }
+ predicate(const std::type_info * ti) :
+ m_ti(ti)
+ {}
+ };
+protected:
+ helper_collection(){}
+ ~helper_collection(){}
+public:
+ template<typename Helper>
+ Helper& get_helper(Helper * = NULL) {
+
+ const std::type_info * eti = & typeid(Helper);
+
+ collection::const_iterator it =
+ std::find_if(
+ m_collection.begin(),
+ m_collection.end(),
+ predicate(eti)
+ );
+
+ void * rval;
+ if(it == m_collection.end()){
+ m_collection.push_back(
+ std::make_pair(eti, make_helper_ptr<Helper>())
+ );
+ rval = m_collection.back().second.get();
+ }
+ else{
+ rval = it->second.get();
+ }
+ return *static_cast<Helper *>(rval);
+ }
+};
+
+} // namespace detail
+} // namespace serialization
+} // namespace boost
+
+#endif // BOOST_ARCHIVE_DETAIL_HELPER_COLLECTION_HPP
diff --git a/3rdParty/Boost/src/boost/archive/detail/interface_iarchive.hpp b/3rdParty/Boost/src/boost/archive/detail/interface_iarchive.hpp
index 0648752..b7bd165 100644
--- a/3rdParty/Boost/src/boost/archive/detail/interface_iarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/interface_iarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/detail/interface_oarchive.hpp b/3rdParty/Boost/src/boost/archive/detail/interface_oarchive.hpp
index e8db7a2..7ae7176 100644
--- a/3rdParty/Boost/src/boost/archive/detail/interface_oarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/interface_oarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/detail/iserializer.hpp b/3rdParty/Boost/src/boost/archive/detail/iserializer.hpp
index 53765af..cf547de 100644
--- a/3rdParty/Boost/src/boost/archive/detail/iserializer.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/iserializer.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#pragma inline_depth(511)
@@ -24,5 +24,4 @@
#include <new> // for placement new
-#include <memory> // for auto_ptr
#include <cstddef> // size_t, NULL
@@ -60,12 +59,9 @@ namespace std{
#include <boost/serialization/assume_abstract.hpp>
-#define DONT_USE_HAS_NEW_OPERATOR ( \
+#if ! ( \
defined(__BORLANDC__) \
|| BOOST_WORKAROUND(__IBMCPP__, < 1210) \
- || defined(BOOST_MSVC) && (BOOST_MSVC <= 1300) \
|| defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x590) \
)
-
-#if ! DONT_USE_HAS_NEW_OPERATOR
#include <boost/type_traits/has_new_operator.hpp>
#endif
@@ -128,5 +124,5 @@ protected:
basic_iserializer(
boost::serialization::singleton<
- BOOST_DEDUCED_TYPENAME
+ typename
boost::serialization::type_info_implementation< T >::type
>::get_const_instance()
@@ -198,62 +194,59 @@ BOOST_DLLEXPORT void iserializer<Archive, T>::load_object_data(
#endif
-template<class Archive, class T>
-class pointer_iserializer :
- public basic_pointer_iserializer
-{
-private:
- virtual const basic_iserializer & get_basic_serializer() const {
- return boost::serialization::singleton<
- iserializer<Archive, T>
- >::get_const_instance();
- }
- BOOST_DLLEXPORT virtual void load_object_ptr(
- basic_iarchive & ar,
- void * & x,
- const unsigned int file_version
- ) const BOOST_USED;
-protected:
- // this should alway be a singleton so make the constructor protected
- pointer_iserializer();
- ~pointer_iserializer();
-};
-
-#ifdef BOOST_MSVC
-# pragma warning(pop)
-#endif
-
-// note trick to be sure that operator new is using class specific
-// version if such exists. Due to Peter Dimov.
-// note: the following fails if T has no default constructor.
-// otherwise it would have been ideal
-//struct heap_allocator : public T
-//{
-// T * invoke(){
-// return ::new(sizeof(T));
-// }
-//}
+// the purpose of this code is to allocate memory for an object
+// without requiring the constructor to be called. Presumably
+// the allocated object will be subsequently initialized with
+// "placement new".
+// note: we have the boost type trait has_new_operator but we
+// have no corresponding has_delete_operator. So we presume
+// that the former being true would imply that the a delete
+// operator is also defined for the class T.
template<class T>
-struct heap_allocator
-{
+struct heap_allocation {
// boost::has_new_operator< T > doesn't work on these compilers
#if DONT_USE_HAS_NEW_OPERATOR
// This doesn't handle operator new overload for class T
- static T * invoke(){
+ static T * invoke_new(){
return static_cast<T *>(operator new(sizeof(T)));
}
+ static viod invoke_delete(){
+ (operator delete(sizeof(T)));
+ }
#else
+ // note: we presume that a true value for has_new_operator
+ // implies the existence of a class specific delete operator as well
+ // as a class specific new operator.
struct has_new_operator {
- static T* invoke() {
+ static T * invoke_new() {
return static_cast<T *>((T::operator new)(sizeof(T)));
}
+ static void invoke_delete(T * t) {
+ // if compilation fails here, the likely cause that the class
+ // T has a class specific new operator but no class specific
+ // delete operator which matches the following signature. Fix
+ // your program to have this. Note that adding operator delete
+ // with only one parameter doesn't seem correct to me since
+ // the standard(3.7.4.2) says "
+ // "If a class T has a member deallocation function named
+ // 'operator delete' with exactly one parameter, then that function
+ // is a usual (non-placement) deallocation function" which I take
+ // to mean that it will call the destructor of type T which we don't
+ // want to do here.
+ // Note: reliance upon automatic conversion from T * to void * here
+ (T::operator delete)(t, sizeof(T));
+ }
};
struct doesnt_have_new_operator {
- static T* invoke() {
+ static T* invoke_new() {
return static_cast<T *>(operator new(sizeof(T)));
}
+ static void invoke_delete(T * t) {
+ // Note: I'm reliance upon automatic conversion from T * to void * here
+ (operator delete)(t);
+ }
};
- static T * invoke() {
- typedef BOOST_DEDUCED_TYPENAME
+ static T * invoke_new() {
+ typedef typename
mpl::eval_if<
boost::has_new_operator< T >,
@@ -261,20 +254,22 @@ struct heap_allocator
mpl::identity<doesnt_have_new_operator >
>::type typex;
- return typex::invoke();
+ return typex::invoke_new();
+ }
+ static void invoke_delete(T *t) {
+ typedef typename
+ mpl::eval_if<
+ boost::has_new_operator< T >,
+ mpl::identity<has_new_operator >,
+ mpl::identity<doesnt_have_new_operator >
+ >::type typex;
+ typex::invoke_delete(t);
}
#endif
-};
-
-// due to Martin Ecker
-template <typename T>
-class auto_ptr_with_deleter
-{
-public:
- explicit auto_ptr_with_deleter(T* p) :
- m_p(p)
- {}
- ~auto_ptr_with_deleter(){
- if (m_p)
- boost::serialization::access::destroy(m_p);
+ explicit heap_allocation(){
+ m_p = invoke_new();
+ }
+ ~heap_allocation(){
+ if (0 != m_p)
+ invoke_delete(m_p);
}
T* get() const {
@@ -284,5 +279,5 @@ public:
T* release() {
T* p = m_p;
- m_p = NULL;
+ m_p = 0;
return p;
}
@@ -291,4 +286,35 @@ private:
};
+template<class Archive, class T>
+class pointer_iserializer :
+ public basic_pointer_iserializer
+{
+private:
+ virtual void * heap_allocation() const {
+ detail::heap_allocation<T> h;
+ T * t = h.get();
+ h.release();
+ return t;
+ }
+ virtual const basic_iserializer & get_basic_serializer() const {
+ return boost::serialization::singleton<
+ iserializer<Archive, T>
+ >::get_const_instance();
+ }
+ BOOST_DLLEXPORT virtual void load_object_ptr(
+ basic_iarchive & ar,
+ void * x,
+ const unsigned int file_version
+ ) const BOOST_USED;
+protected:
+ // this should alway be a singleton so make the constructor protected
+ pointer_iserializer();
+ ~pointer_iserializer();
+};
+
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+
// note: BOOST_DLLEXPORT is so that code for polymorphic class
// serialized only through base class won't get optimized out
@@ -296,5 +322,5 @@ template<class Archive, class T>
BOOST_DLLEXPORT void pointer_iserializer<Archive, T>::load_object_ptr(
basic_iarchive & ar,
- void * & x,
+ void * t,
const unsigned int file_version
) const
@@ -303,10 +329,6 @@ BOOST_DLLEXPORT void pointer_iserializer<Archive, T>::load_object_ptr(
boost::serialization::smart_cast_reference<Archive &>(ar);
- auto_ptr_with_deleter< T > ap(heap_allocator< T >::invoke());
- if(NULL == ap.get())
- boost::serialization::throw_exception(std::bad_alloc()) ;
-
- T * t = ap.get();
- x = t;
+ // note that the above will throw std::bad_alloc if the allocation
+ // fails so we don't have to address this contingency here.
// catch exception during load_construct_data so that we don't
@@ -314,21 +336,22 @@ BOOST_DLLEXPORT void pointer_iserializer<Archive, T>::load_object_ptr(
// constructed
BOOST_TRY {
- // this addresses an obscure situtation that occurs when
+ // this addresses an obscure situation that occurs when
// load_constructor de-serializes something through a pointer.
ar.next_object_pointer(t);
boost::serialization::load_construct_data_adl<Archive, T>(
ar_impl,
- t,
+ static_cast<T *>(t),
file_version
);
}
BOOST_CATCH(...){
- ap.release();
+ // if we get here the load_construct failed. The heap_allocation
+ // will be automatically deleted so we don't have to do anything
+ // special here.
BOOST_RETHROW;
}
BOOST_CATCH_END
- ar_impl >> boost::serialization::make_nvp(NULL, * t);
- ap.release();
+ ar_impl >> boost::serialization::make_nvp(NULL, * static_cast<T *>(t));
}
@@ -337,5 +360,5 @@ pointer_iserializer<Archive, T>::pointer_iserializer() :
basic_pointer_iserializer(
boost::serialization::singleton<
- BOOST_DEDUCED_TYPENAME
+ typename
boost::serialization::type_info_implementation< T >::type
>::get_const_instance()
@@ -406,5 +429,5 @@ struct load_non_pointer_type {
template<class T>
static void invoke(Archive & ar, T &t){
- typedef BOOST_DEDUCED_TYPENAME mpl::eval_if<
+ typedef typename mpl::eval_if<
// if its primitive
mpl::equal_to<
@@ -414,5 +437,5 @@ struct load_non_pointer_type {
mpl::identity<load_primitive>,
// else
- BOOST_DEDUCED_TYPENAME mpl::eval_if<
+ typename mpl::eval_if<
// class info / version
mpl::greater_equal<
@@ -423,5 +446,5 @@ struct load_non_pointer_type {
mpl::identity<load_standard>,
// else
- BOOST_DEDUCED_TYPENAME mpl::eval_if<
+ typename mpl::eval_if<
// no tracking
mpl::equal_to<
@@ -467,5 +490,5 @@ struct load_pointer_type {
// permits abstract base classes to be used - note: exception
// virtual serialize functions used for plug-ins
- typedef BOOST_DEDUCED_TYPENAME
+ typedef typename
mpl::eval_if<
boost::serialization::is_abstract<const T>,
@@ -483,16 +506,19 @@ struct load_pointer_type {
) {
// tweak the pointer back to the base class
- return static_cast<T *>(
- const_cast<void *>(
- boost::serialization::void_upcast(
- eti,
- boost::serialization::singleton<
- BOOST_DEDUCED_TYPENAME
- boost::serialization::type_info_implementation< T >::type
- >::get_const_instance(),
- t
- )
+ void * upcast = const_cast<void *>(
+ boost::serialization::void_upcast(
+ eti,
+ boost::serialization::singleton<
+ typename
+ boost::serialization::type_info_implementation< T >::type
+ >::get_const_instance(),
+ t
)
);
+ if(NULL == upcast)
+ boost::serialization::throw_exception(
+ archive_exception(archive_exception::unregistered_class)
+ );
+ return static_cast<T *>(upcast);
}
@@ -545,5 +571,5 @@ struct load_array_type {
template<class T>
static void invoke(Archive &ar, T &t){
- typedef BOOST_DEDUCED_TYPENAME remove_extent< T >::type value_type;
+ typedef typename remove_extent< T >::type value_type;
// convert integers to correct enum to load
@@ -577,11 +603,11 @@ inline void load(Archive & ar, T &t){
detail::check_const_loading< T >();
typedef
- BOOST_DEDUCED_TYPENAME mpl::eval_if<is_pointer< T >,
+ typename mpl::eval_if<is_pointer< T >,
mpl::identity<detail::load_pointer_type<Archive> >
,//else
- BOOST_DEDUCED_TYPENAME mpl::eval_if<is_array< T >,
+ typename mpl::eval_if<is_array< T >,
mpl::identity<detail::load_array_type<Archive> >
,//else
- BOOST_DEDUCED_TYPENAME mpl::eval_if<is_enum< T >,
+ typename mpl::eval_if<is_enum< T >,
mpl::identity<detail::load_enum_type<Archive> >
,//else
diff --git a/3rdParty/Boost/src/boost/archive/detail/oserializer.hpp b/3rdParty/Boost/src/boost/archive/detail/oserializer.hpp
index 7d2694d..7a7e239 100644
--- a/3rdParty/Boost/src/boost/archive/detail/oserializer.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/oserializer.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#pragma inline_depth(511)
@@ -107,5 +107,5 @@ public:
basic_oserializer(
boost::serialization::singleton<
- BOOST_DEDUCED_TYPENAME
+ typename
boost::serialization::type_info_implementation< T >::type
>::get_const_instance()
@@ -206,5 +206,5 @@ pointer_oserializer<Archive, T>::pointer_oserializer() :
basic_pointer_oserializer(
boost::serialization::singleton<
- BOOST_DEDUCED_TYPENAME
+ typename
boost::serialization::type_info_implementation< T >::type
>::get_const_instance()
@@ -276,5 +276,5 @@ struct save_non_pointer_type {
static void invoke(Archive & ar, const T & t){
typedef
- BOOST_DEDUCED_TYPENAME mpl::eval_if<
+ typename mpl::eval_if<
// if its primitive
mpl::equal_to<
@@ -284,5 +284,5 @@ struct save_non_pointer_type {
mpl::identity<save_primitive>,
// else
- BOOST_DEDUCED_TYPENAME mpl::eval_if<
+ typename mpl::eval_if<
// class info / version
mpl::greater_equal<
@@ -293,5 +293,5 @@ struct save_non_pointer_type {
mpl::identity<save_standard>,
// else
- BOOST_DEDUCED_TYPENAME mpl::eval_if<
+ typename mpl::eval_if<
// no tracking
mpl::equal_to<
@@ -343,5 +343,5 @@ struct save_pointer_type {
// virtual serialize functions used for plug-ins
typedef
- BOOST_DEDUCED_TYPENAME mpl::eval_if<
+ typename mpl::eval_if<
boost::serialization::is_abstract< T >,
mpl::identity<abstract>,
@@ -374,8 +374,8 @@ struct save_pointer_type {
T & t
){
- BOOST_DEDUCED_TYPENAME
+ typename
boost::serialization::type_info_implementation< T >::type const
& i = boost::serialization::singleton<
- BOOST_DEDUCED_TYPENAME
+ typename
boost::serialization::type_info_implementation< T >::type
>::get_const_instance();
@@ -453,5 +453,5 @@ struct save_pointer_type {
check_pointer_level< T >();
check_pointer_tracking< T >();
- typedef BOOST_DEDUCED_TYPENAME mpl::eval_if<
+ typedef typename mpl::eval_if<
is_polymorphic< T >,
mpl::identity<polymorphic>,
@@ -491,5 +491,5 @@ struct save_array_type
template<class T>
static void invoke(Archive &ar, const T &t){
- typedef BOOST_DEDUCED_TYPENAME boost::remove_extent< T >::type value_type;
+ typedef typename boost::remove_extent< T >::type value_type;
save_access::end_preamble(ar);
@@ -510,11 +510,11 @@ template<class Archive, class T>
inline void save(Archive & ar, /*const*/ T &t){
typedef
- BOOST_DEDUCED_TYPENAME mpl::eval_if<is_pointer< T >,
+ typename mpl::eval_if<is_pointer< T >,
mpl::identity<detail::save_pointer_type<Archive> >,
//else
- BOOST_DEDUCED_TYPENAME mpl::eval_if<is_enum< T >,
+ typename mpl::eval_if<is_enum< T >,
mpl::identity<detail::save_enum_type<Archive> >,
//else
- BOOST_DEDUCED_TYPENAME mpl::eval_if<is_array< T >,
+ typename mpl::eval_if<is_array< T >,
mpl::identity<detail::save_array_type<Archive> >,
//else
diff --git a/3rdParty/Boost/src/boost/archive/detail/register_archive.hpp b/3rdParty/Boost/src/boost/archive/detail/register_archive.hpp
index e31ae46..81a19b9 100644
--- a/3rdParty/Boost/src/boost/archive/detail/register_archive.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/register_archive.hpp
@@ -82,5 +82,5 @@ namespace boost { namespace archive { namespace detail { \
\
template <class Serializable> \
-BOOST_DEDUCED_TYPENAME _ptr_serialization_support<Archive, Serializable>::type \
+typename _ptr_serialization_support<Archive, Serializable>::type \
instantiate_ptr_serialization( Serializable*, Archive*, adl_tag ); \
\
diff --git a/3rdParty/Boost/src/boost/archive/detail/utf8_codecvt_facet.hpp b/3rdParty/Boost/src/boost/archive/detail/utf8_codecvt_facet.hpp
index bd859ff..b2430d5 100644
--- a/3rdParty/Boost/src/boost/archive/detail/utf8_codecvt_facet.hpp
+++ b/3rdParty/Boost/src/boost/archive/detail/utf8_codecvt_facet.hpp
@@ -8,14 +8,16 @@
#define BOOST_ARCHIVE_DETAIL_UTF8_CODECVT_FACET_HPP
-#define BOOST_UTF8_BEGIN_NAMESPACE \
- namespace boost { namespace archive { namespace detail {
-#define BOOST_UTF8_DECL
-#define BOOST_UTF8_END_NAMESPACE }}}
+#ifdef BOOST_NO_CXX11_HDR_CODECVT
+ #define BOOST_UTF8_BEGIN_NAMESPACE \
+ namespace boost { namespace archive { namespace detail {
+ #define BOOST_UTF8_DECL
+ #define BOOST_UTF8_END_NAMESPACE }}}
-#include <boost/detail/utf8_codecvt_facet.hpp>
-
-#undef BOOST_UTF8_END_NAMESPACE
-#undef BOOST_UTF8_DECL
-#undef BOOST_UTF8_BEGIN_NAMESPACE
+ #include <boost/detail/utf8_codecvt_facet.hpp>
+ #undef BOOST_UTF8_END_NAMESPACE
+ #undef BOOST_UTF8_DECL
+ #undef BOOST_UTF8_BEGIN_NAMESPACE
+#endif // BOOST_NO_CXX11_HDR_CODECVT
#endif // BOOST_ARCHIVE_DETAIL_UTF8_CODECVT_FACET_HPP
+
diff --git a/3rdParty/Boost/src/boost/archive/dinkumware.hpp b/3rdParty/Boost/src/boost/archive/dinkumware.hpp
index bfa828d..90ba627 100644
--- a/3rdParty/Boost/src/boost/archive/dinkumware.hpp
+++ b/3rdParty/Boost/src/boost/archive/dinkumware.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/impl/basic_binary_iarchive.ipp b/3rdParty/Boost/src/boost/archive/impl/basic_binary_iarchive.ipp
index 8ea39f7..b8e7f45 100644
--- a/3rdParty/Boost/src/boost/archive/impl/basic_binary_iarchive.ipp
+++ b/3rdParty/Boost/src/boost/archive/impl/basic_binary_iarchive.ipp
@@ -13,5 +13,5 @@
#include <cstring>
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
+#include <boost/config.hpp>
#if defined(BOOST_NO_STDC_NAMESPACE)
namespace std{
@@ -52,4 +52,6 @@ basic_binary_iarchive<Archive>::init(){
// read signature in an archive version independent manner
std::string file_signature;
+
+ #if 0 // commented out since it interfers with derivation
try {
std::size_t l;
@@ -70,4 +72,9 @@ basic_binary_iarchive<Archive>::init(){
file_signature = "";
}
+ #else
+ // https://svn.boost.org/trac/boost/ticket/7301
+ * this->This() >> file_signature;
+ #endif
+
if(file_signature != BOOST_ARCHIVE_SIGNATURE())
boost::serialization::throw_exception(
@@ -114,8 +121,5 @@ basic_binary_iarchive<Archive>::init(){
this->set_library_version(input_library_version);
#else
- #if ! BOOST_WORKAROUND(BOOST_MSVC, <= 1200)
- detail::
- #endif
- basic_iarchive::set_library_version(input_library_version);
+ detail::basic_iarchive::set_library_version(input_library_version);
#endif
diff --git a/3rdParty/Boost/src/boost/archive/impl/basic_binary_iprimitive.ipp b/3rdParty/Boost/src/boost/archive/impl/basic_binary_iprimitive.ipp
index e0f5c2e..9e2340e 100644
--- a/3rdParty/Boost/src/boost/archive/impl/basic_binary_iprimitive.ipp
+++ b/3rdParty/Boost/src/boost/archive/impl/basic_binary_iprimitive.ipp
@@ -29,4 +29,5 @@ namespace std{
#include <boost/archive/codecvt_null.hpp>
#include <boost/archive/add_facet.hpp>
+#include <boost/archive/basic_binary_iprimitive.hpp>
namespace boost {
diff --git a/3rdParty/Boost/src/boost/archive/impl/basic_binary_oarchive.ipp b/3rdParty/Boost/src/boost/archive/impl/basic_binary_oarchive.ipp
index dec2cd7..467fd6f 100644
--- a/3rdParty/Boost/src/boost/archive/impl/basic_binary_oarchive.ipp
+++ b/3rdParty/Boost/src/boost/archive/impl/basic_binary_oarchive.ipp
@@ -13,5 +13,5 @@
#include <cstring>
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
+#include <boost/config.hpp>
#if defined(BOOST_NO_STDC_NAMESPACE)
namespace std{
diff --git a/3rdParty/Boost/src/boost/archive/impl/basic_binary_oprimitive.ipp b/3rdParty/Boost/src/boost/archive/impl/basic_binary_oprimitive.ipp
index 02b5ffa..509decb 100644
--- a/3rdParty/Boost/src/boost/archive/impl/basic_binary_oprimitive.ipp
+++ b/3rdParty/Boost/src/boost/archive/impl/basic_binary_oprimitive.ipp
@@ -32,4 +32,5 @@ namespace std{ using ::wcslen; }
#include <boost/archive/add_facet.hpp>
#include <boost/archive/codecvt_null.hpp>
+#include <boost/archive/basic_binary_oprimitive.hpp>
namespace boost {
diff --git a/3rdParty/Boost/src/boost/archive/impl/basic_text_iarchive.ipp b/3rdParty/Boost/src/boost/archive/impl/basic_text_iarchive.ipp
index 0a246b7..8d364f9 100644
--- a/3rdParty/Boost/src/boost/archive/impl/basic_text_iarchive.ipp
+++ b/3rdParty/Boost/src/boost/archive/impl/basic_text_iarchive.ipp
@@ -12,5 +12,5 @@
#include <cstring>
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
+#include <boost/config.hpp>
#if defined(BOOST_NO_STDC_NAMESPACE)
namespace std{
@@ -63,8 +63,5 @@ basic_text_iarchive<Archive>::init(void){
this->set_library_version(input_library_version);
#else
- #if ! BOOST_WORKAROUND(BOOST_MSVC, <= 1200)
- detail::
- #endif
- basic_iarchive::set_library_version(input_library_version);
+ detail::basic_iarchive::set_library_version(input_library_version);
#endif
diff --git a/3rdParty/Boost/src/boost/archive/impl/basic_text_iprimitive.ipp b/3rdParty/Boost/src/boost/archive/impl/basic_text_iprimitive.ipp
index ad6a6d5..d0da284 100644
--- a/3rdParty/Boost/src/boost/archive/impl/basic_text_iprimitive.ipp
+++ b/3rdParty/Boost/src/boost/archive/impl/basic_text_iprimitive.ipp
@@ -31,8 +31,8 @@ namespace std{
#include <boost/archive/iterators/transform_width.hpp>
-namespace boost {
+namespace boost {
namespace archive {
-namespace {
+namespace detail {
template<class CharType>
bool is_whitespace(CharType c);
@@ -49,5 +49,5 @@ namespace {
}
#endif
-}
+} // detail
// translate base64 text into binary and copy into buffer
@@ -59,5 +59,5 @@ basic_text_iprimitive<IStream>::load_binary(
std::size_t count
){
- typedef BOOST_DEDUCED_TYPENAME IStream::char_type CharType;
+ typedef typename IStream::char_type CharType;
if(0 == count)
@@ -74,5 +74,5 @@ basic_text_iprimitive<IStream>::load_binary(
);
// convert from base64 to binary
- typedef BOOST_DEDUCED_TYPENAME
+ typedef typename
iterators::transform_width<
iterators::binary_from_base64<
@@ -87,31 +87,29 @@ basic_text_iprimitive<IStream>::load_binary(
>
binary;
-
- binary ti_begin = binary(
+
+ binary i = binary(
BOOST_MAKE_PFTO_WRAPPER(
iterators::istream_iterator<CharType>(is)
)
);
-
+
char * caddr = static_cast<char *>(address);
// take care that we don't increment anymore than necessary
- while(--count > 0){
- *caddr++ = static_cast<char>(*ti_begin);
- ++ti_begin;
+ while(count-- > 0){
+ *caddr++ = static_cast<char>(*i++);
}
- *caddr++ = static_cast<char>(*ti_begin);
-
- iterators::istream_iterator<CharType> i;
+
+ // skip over any excess input
for(;;){
- BOOST_DEDUCED_TYPENAME IStream::int_type r;
+ typename IStream::int_type r;
r = is.get();
if(is.eof())
break;
- if(is_whitespace(static_cast<CharType>(r)))
+ if(detail::is_whitespace(static_cast<CharType>(r)))
break;
}
}
-
+
template<class IStream>
BOOST_ARCHIVE_OR_WARCHIVE_DECL(BOOST_PP_EMPTY())
@@ -131,5 +129,5 @@ basic_text_iprimitive<IStream>::basic_text_iprimitive(
add_facet(
std::locale::classic(),
- new codecvt_null<BOOST_DEDUCED_TYPENAME IStream::char_type>
+ new codecvt_null<typename IStream::char_type>
)
);
diff --git a/3rdParty/Boost/src/boost/archive/impl/basic_text_oarchive.ipp b/3rdParty/Boost/src/boost/archive/impl/basic_text_oarchive.ipp
index 34e6995..4170c97 100644
--- a/3rdParty/Boost/src/boost/archive/impl/basic_text_oarchive.ipp
+++ b/3rdParty/Boost/src/boost/archive/impl/basic_text_oarchive.ipp
@@ -12,5 +12,5 @@
#include <cstring>
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
+#include <boost/config.hpp>
#if defined(BOOST_NO_STDC_NAMESPACE)
namespace std{
diff --git a/3rdParty/Boost/src/boost/archive/impl/basic_text_oprimitive.ipp b/3rdParty/Boost/src/boost/archive/impl/basic_text_oprimitive.ipp
index cacab61..33ab4a8 100644
--- a/3rdParty/Boost/src/boost/archive/impl/basic_text_oprimitive.ipp
+++ b/3rdParty/Boost/src/boost/archive/impl/basic_text_oprimitive.ipp
@@ -10,4 +10,5 @@
#include <cstddef> // NULL
+#include <algorithm> // std::copy
#include <boost/serialization/pfto.hpp>
@@ -31,5 +32,5 @@ basic_text_oprimitive<OStream>::save_binary(
std::size_t count
){
- typedef BOOST_DEDUCED_TYPENAME OStream::char_type CharType;
+ typedef typename OStream::char_type CharType;
if(0 == count)
@@ -52,5 +53,5 @@ basic_text_oprimitive<OStream>::save_binary(
>
>
- ,72
+ ,76
,const char // cwpro8 needs this
>
@@ -91,5 +92,5 @@ basic_text_oprimitive<OStream>::basic_text_oprimitive(
add_facet(
std::locale::classic(),
- new codecvt_null<BOOST_DEDUCED_TYPENAME OStream::char_type>
+ new codecvt_null<typename OStream::char_type>
)
);
diff --git a/3rdParty/Boost/src/boost/archive/impl/basic_xml_grammar.hpp b/3rdParty/Boost/src/boost/archive/impl/basic_xml_grammar.hpp
index 807ed07..66ca1f0 100644
--- a/3rdParty/Boost/src/boost/archive/impl/basic_xml_grammar.hpp
+++ b/3rdParty/Boost/src/boost/archive/impl/basic_xml_grammar.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -51,9 +51,4 @@
#include <boost/detail/workaround.hpp>
-// supress noise
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1200)
-# pragma warning (disable : 4786) // too long name, harmless warning
-#endif
-
#include <boost/spirit/include/classic_rule.hpp>
#include <boost/spirit/include/classic_chset.hpp>
diff --git a/3rdParty/Boost/src/boost/archive/impl/xml_iarchive_impl.ipp b/3rdParty/Boost/src/boost/archive/impl/xml_iarchive_impl.ipp
index c7cbc7f..dc62eed 100644
--- a/3rdParty/Boost/src/boost/archive/impl/xml_iarchive_impl.ipp
+++ b/3rdParty/Boost/src/boost/archive/impl/xml_iarchive_impl.ipp
@@ -99,7 +99,7 @@ xml_iarchive_impl<Archive>::load(wchar_t * ws){
while(start < end){
wchar_t wc;
- int result = std::mbtowc(&wc, start, end - start);
- if(0 < result){
- start += result;
+ int length = std::mbtowc(&wc, start, end - start);
+ if(0 < length){
+ start += length;
*ws++ = wc;
continue;
diff --git a/3rdParty/Boost/src/boost/archive/impl/xml_oarchive_impl.ipp b/3rdParty/Boost/src/boost/archive/impl/xml_oarchive_impl.ipp
index 8ab954f..ab1a217 100644
--- a/3rdParty/Boost/src/boost/archive/impl/xml_oarchive_impl.ipp
+++ b/3rdParty/Boost/src/boost/archive/impl/xml_oarchive_impl.ipp
@@ -9,5 +9,5 @@
#include <ostream>
#include <iomanip>
-#include <algorithm>
+#include <algorithm> // std::copy
#include <string>
diff --git a/3rdParty/Boost/src/boost/archive/impl/xml_wiarchive_impl.ipp b/3rdParty/Boost/src/boost/archive/impl/xml_wiarchive_impl.ipp
index 9dde66c..a4665ad 100644
--- a/3rdParty/Boost/src/boost/archive/impl/xml_wiarchive_impl.ipp
+++ b/3rdParty/Boost/src/boost/archive/impl/xml_wiarchive_impl.ipp
@@ -1,4 +1,4 @@
/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// xml_wiprimitive.cpp:
+// xml_wiarchive_impl.ipp:
// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
@@ -9,6 +9,4 @@
// See http://www.boost.org for updates, documentation, and revision history.
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
-
#include <cstring>
#if defined(BOOST_NO_STDC_NAMESPACE)
@@ -22,5 +20,5 @@ namespace std{
#include <boost/assert.hpp>
-#include <algorithm>
+#include <algorithm> // std::copy
#include <boost/detail/workaround.hpp> // Dinkumware and RogueWave
@@ -35,7 +33,14 @@ namespace std{
#include <boost/serialization/string.hpp>
#include <boost/archive/add_facet.hpp>
-#include <boost/archive/xml_archive_exception.hpp>
-#include <boost/archive/detail/utf8_codecvt_facet.hpp>
+#ifndef BOOST_NO_CXX11_HDR_CODECVT
+ #include <codecvt>
+ namespace boost { namespace archive { namespace detail {
+ typedef std::codecvt_utf8<wchar_t> utf8_codecvt_facet;
+ } } }
+#else
+ #include <boost/archive/detail/utf8_codecvt_facet.hpp>
+#endif
+#include <boost/archive/xml_archive_exception.hpp>
#include <boost/archive/iterators/mb_from_wchar.hpp>
@@ -168,5 +173,5 @@ xml_wiarchive_impl<Archive>::xml_wiarchive_impl(
archive_locale.reset(
add_facet(
- std::locale::classic(),
+ is_.getloc(),
new boost::archive::detail::utf8_codecvt_facet
)
diff --git a/3rdParty/Boost/src/boost/archive/impl/xml_woarchive_impl.ipp b/3rdParty/Boost/src/boost/archive/impl/xml_woarchive_impl.ipp
index 3bf42bd..6092a91 100644
--- a/3rdParty/Boost/src/boost/archive/impl/xml_woarchive_impl.ipp
+++ b/3rdParty/Boost/src/boost/archive/impl/xml_woarchive_impl.ipp
@@ -12,13 +12,12 @@
#include <ostream>
#include <string>
-#include <algorithm>
+#include <algorithm> // std::copy
#include <locale>
-#include <boost/config.hpp> // msvc 6.0 needs this to suppress warnings
- // for BOOST_DEDUCED_TYPENAME
#include <cstring> // strlen
#include <cstdlib> // mbtowc
#include <cwchar> // wcslen
+#include <boost/config.hpp>
#if defined(BOOST_NO_STDC_NAMESPACE)
namespace std{
@@ -40,5 +39,12 @@ namespace std{
#include <boost/archive/add_facet.hpp>
-#include <boost/archive/detail/utf8_codecvt_facet.hpp>
+#ifndef BOOST_NO_CXX11_HDR_CODECVT
+ #include <codecvt>
+ namespace boost { namespace archive { namespace detail {
+ typedef std::codecvt_utf8<wchar_t> utf8_codecvt_facet;
+ } } }
+#else
+ #include <boost/archive/detail/utf8_codecvt_facet.hpp>
+#endif
namespace boost {
@@ -129,18 +135,19 @@ xml_woarchive_impl<Archive>::xml_woarchive_impl(
// b) after flush has been called. This prevents one-to-many
// transforms (such as one to many transforms from getting
- // mixed up. Unfortunately, STLPort doesn't respect b) above
- // so the restoration of the original archive locale done by
- // the locale_saver doesn't get processed,
- // before the current one is destroyed.
- // so the codecvt doesn't get replaced with the orginal
- // so closing the stream invokes codecvt::do_unshift
- // so it crashes because the corresponding locale that contained
- // the codecvt isn't around any more.
- // we can hack around this by using a static codecvt that never
- // gets destroyed.
+ // mixed up.
if(0 == (flags & no_codecvt)){
boost::archive::detail::utf8_codecvt_facet *pfacet;
#if defined(__SGI_STL_PORT)
- static boost::archive::detail::utf8_codecvt_facet
+ // Unfortunately, STLPort doesn't respect b) above
+ // so the restoration of the original archive locale done by
+ // the locale_saver doesn't get processed,
+ // before the current one is destroyed.
+ // so the codecvt doesn't get replaced with the orginal
+ // so closing the stream invokes codecvt::do_unshift
+ // so it crashes because the corresponding locale that contained
+ // the codecvt isn't around any more.
+ // we can hack around this by using a static codecvt that never
+ // gets destroyed.
+ static boost::archive::detail::utf8_codecvt_facet
facet(static_cast<size_t>(1));
pfacet = & facet;
@@ -148,5 +155,5 @@ xml_woarchive_impl<Archive>::xml_woarchive_impl(
pfacet = new boost::archive::detail::utf8_codecvt_facet;
#endif
- archive_locale.reset(add_facet(std::locale::classic(), pfacet));
+ archive_locale.reset(add_facet(os_.getloc(), pfacet));
os.imbue(* archive_locale);
}
diff --git a/3rdParty/Boost/src/boost/archive/iterators/base64_from_binary.hpp b/3rdParty/Boost/src/boost/archive/iterators/base64_from_binary.hpp
index ecb916a..836d93d 100644
--- a/3rdParty/Boost/src/boost/archive/iterators/base64_from_binary.hpp
+++ b/3rdParty/Boost/src/boost/archive/iterators/base64_from_binary.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -20,5 +20,4 @@
#include <cstddef> // size_t
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
#if defined(BOOST_NO_STDC_NAMESPACE)
namespace std{
@@ -58,5 +57,5 @@ struct from_6_bit {
// note: what we would like to do is
-// template<class Base, class CharType = BOOST_DEDUCED_TYPENAME Base::value_type>
+// template<class Base, class CharType = typename Base::value_type>
// typedef transform_iterator<
// from_6_bit<CharType>,
@@ -70,8 +69,8 @@ struct from_6_bit {
// ideal. This is also addressed here.
-//template<class Base, class CharType = BOOST_DEDUCED_TYPENAME Base::value_type>
+//template<class Base, class CharType = typename Base::value_type>
template<
class Base,
- class CharType = BOOST_DEDUCED_TYPENAME boost::iterator_value<Base>::type
+ class CharType = typename boost::iterator_value<Base>::type
>
class base64_from_binary :
@@ -83,5 +82,5 @@ class base64_from_binary :
friend class boost::iterator_core_access;
typedef transform_iterator<
- BOOST_DEDUCED_TYPENAME detail::from_6_bit<CharType>,
+ typename detail::from_6_bit<CharType>,
Base
> super_t;
diff --git a/3rdParty/Boost/src/boost/archive/iterators/binary_from_base64.hpp b/3rdParty/Boost/src/boost/archive/iterators/binary_from_base64.hpp
index 60f23f3..9d2c87e 100644
--- a/3rdParty/Boost/src/boost/archive/iterators/binary_from_base64.hpp
+++ b/3rdParty/Boost/src/boost/archive/iterators/binary_from_base64.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -19,5 +19,4 @@
#include <boost/assert.hpp>
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
#include <boost/serialization/throw_exception.hpp>
#include <boost/serialization/pfto.hpp>
@@ -44,5 +43,5 @@ struct to_6_bit {
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,
- 52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,
+ 52,53,54,55,56,57,58,59,60,61,-1,-1,-1, 0,-1,-1, // render '=' as 0
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,
15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,
@@ -68,5 +67,5 @@ struct to_6_bit {
// note: what we would like to do is
-// template<class Base, class CharType = BOOST_DEDUCED_TYPENAME Base::value_type>
+// template<class Base, class CharType = typename Base::value_type>
// typedef transform_iterator<
// from_6_bit<CharType>,
@@ -82,5 +81,5 @@ struct to_6_bit {
template<
class Base,
- class CharType = BOOST_DEDUCED_TYPENAME boost::iterator_value<Base>::type
+ class CharType = typename boost::iterator_value<Base>::type
>
class binary_from_base64 : public
diff --git a/3rdParty/Boost/src/boost/archive/iterators/dataflow_exception.hpp b/3rdParty/Boost/src/boost/archive/iterators/dataflow_exception.hpp
index 1d655a1..e3e1860 100644
--- a/3rdParty/Boost/src/boost/archive/iterators/dataflow_exception.hpp
+++ b/3rdParty/Boost/src/boost/archive/iterators/dataflow_exception.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/iterators/escape.hpp b/3rdParty/Boost/src/boost/archive/iterators/escape.hpp
index bb527d4..a1fee91 100644
--- a/3rdParty/Boost/src/boost/archive/iterators/escape.hpp
+++ b/3rdParty/Boost/src/boost/archive/iterators/escape.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -20,5 +20,4 @@
#include <cstddef> // NULL
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
#include <boost/iterator/iterator_adaptor.hpp>
#include <boost/iterator/iterator_traits.hpp>
@@ -36,14 +35,14 @@ class escape :
Derived,
Base,
- BOOST_DEDUCED_TYPENAME boost::iterator_value<Base>::type,
+ typename boost::iterator_value<Base>::type,
single_pass_traversal_tag,
- BOOST_DEDUCED_TYPENAME boost::iterator_value<Base>::type
+ typename boost::iterator_value<Base>::type
>
{
- typedef BOOST_DEDUCED_TYPENAME boost::iterator_value<Base>::type base_value_type;
- typedef BOOST_DEDUCED_TYPENAME boost::iterator_reference<Base>::type reference_type;
+ typedef typename boost::iterator_value<Base>::type base_value_type;
+ typedef typename boost::iterator_reference<Base>::type reference_type;
friend class boost::iterator_core_access;
- typedef BOOST_DEDUCED_TYPENAME boost::iterator_adaptor<
+ typedef typename boost::iterator_adaptor<
Derived,
Base,
diff --git a/3rdParty/Boost/src/boost/archive/iterators/insert_linebreaks.hpp b/3rdParty/Boost/src/boost/archive/iterators/insert_linebreaks.hpp
index 5f826ca..7fbc79f 100644
--- a/3rdParty/Boost/src/boost/archive/iterators/insert_linebreaks.hpp
+++ b/3rdParty/Boost/src/boost/archive/iterators/insert_linebreaks.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -19,5 +19,5 @@
#include <boost/assert.hpp>
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
+#include <boost/config.hpp>
#if defined(BOOST_NO_STDC_NAMESPACE)
namespace std{ using ::memcpy; }
@@ -38,5 +38,5 @@ template<
class Base,
int N,
- class CharType = BOOST_DEDUCED_TYPENAME boost::iterator_value<Base>::type
+ class CharType = typename boost::iterator_value<Base>::type
>
class insert_linebreaks :
diff --git a/3rdParty/Boost/src/boost/archive/iterators/istream_iterator.hpp b/3rdParty/Boost/src/boost/archive/iterators/istream_iterator.hpp
index 1df612d..41aa0be 100644
--- a/3rdParty/Boost/src/boost/archive/iterators/istream_iterator.hpp
+++ b/3rdParty/Boost/src/boost/archive/iterators/istream_iterator.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -42,5 +42,5 @@ class istream_iterator :
friend class boost::iterator_core_access;
typedef istream_iterator this_t ;
- typedef BOOST_DEDUCED_TYPENAME boost::iterator_facade<
+ typedef typename boost::iterator_facade<
istream_iterator<Elem>,
Elem,
@@ -48,11 +48,6 @@ class istream_iterator :
Elem
> super_t;
- typedef BOOST_DEDUCED_TYPENAME std::basic_istream<Elem> istream_type;
+ typedef typename std::basic_istream<Elem> istream_type;
- //Access the value referred to
- Elem dereference() const {
- return m_current_value;
- }
-
bool equal(const this_t & rhs) const {
// note: only works for comparison against end of stream
@@ -60,4 +55,10 @@ class istream_iterator :
}
+/*
+ //Access the value referred to
+ Elem dereference() const {
+ return m_current_value;
+ }
+
void increment(){
if(NULL != m_istream){
@@ -68,4 +69,15 @@ class istream_iterator :
}
}
+*/
+ //Access the value referred to
+ Elem dereference() const {
+ return m_istream->peek();
+ }
+
+ void increment(){
+ if(NULL != m_istream){
+ m_istream->ignore(1);
+ }
+ }
istream_type *m_istream;
@@ -75,5 +87,5 @@ public:
m_istream(& is)
{
- increment();
+ //increment();
}
diff --git a/3rdParty/Boost/src/boost/archive/iterators/mb_from_wchar.hpp b/3rdParty/Boost/src/boost/archive/iterators/mb_from_wchar.hpp
index d8f8a12..04e7c7e 100644
--- a/3rdParty/Boost/src/boost/archive/iterators/mb_from_wchar.hpp
+++ b/3rdParty/Boost/src/boost/archive/iterators/mb_from_wchar.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -21,5 +21,5 @@
#include <cstdlib> // for wctomb()
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
+#include <boost/config.hpp>
#if defined(BOOST_NO_STDC_NAMESPACE)
namespace std{
@@ -51,5 +51,5 @@ class mb_from_wchar
friend class boost::iterator_core_access;
- typedef BOOST_DEDUCED_TYPENAME boost::iterator_adaptor<
+ typedef typename boost::iterator_adaptor<
mb_from_wchar<Base>,
Base,
diff --git a/3rdParty/Boost/src/boost/archive/iterators/ostream_iterator.hpp b/3rdParty/Boost/src/boost/archive/iterators/ostream_iterator.hpp
index 7c3203f..49a9b99 100644
--- a/3rdParty/Boost/src/boost/archive/iterators/ostream_iterator.hpp
+++ b/3rdParty/Boost/src/boost/archive/iterators/ostream_iterator.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/iterators/remove_whitespace.hpp b/3rdParty/Boost/src/boost/archive/iterators/remove_whitespace.hpp
index a01049f..4383987 100644
--- a/3rdParty/Boost/src/boost/archive/iterators/remove_whitespace.hpp
+++ b/3rdParty/Boost/src/boost/archive/iterators/remove_whitespace.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -19,6 +19,4 @@
#include <boost/assert.hpp>
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
-
#include <boost/serialization/pfto.hpp>
@@ -27,7 +25,4 @@
#include <boost/iterator/iterator_traits.hpp>
-//#include <boost/detail/workaround.hpp>
-//#if ! BOOST_WORKAROUND(BOOST_MSVC, <=1300)
-
// here is the default standard implementation of the functor used
// by the filter iterator to remove spaces. Unfortunately usage
@@ -54,6 +49,4 @@ namespace std{ using ::isspace; }
#endif
-//#endif // BOOST_WORKAROUND
-
namespace { // anonymous
@@ -101,5 +94,5 @@ class filter_iterator
{
friend class boost::iterator_core_access;
- typedef BOOST_DEDUCED_TYPENAME boost::iterator_adaptor<
+ typedef typename boost::iterator_adaptor<
filter_iterator<Predicate, Base>,
Base,
@@ -108,5 +101,5 @@ class filter_iterator
> super_t;
typedef filter_iterator<Predicate, Base> this_t;
- typedef BOOST_DEDUCED_TYPENAME super_t::reference reference_type;
+ typedef typename super_t::reference reference_type;
reference_type dereference_impl(){
@@ -143,6 +136,6 @@ class remove_whitespace :
public filter_iterator<
remove_whitespace_predicate<
- BOOST_DEDUCED_TYPENAME boost::iterator_value<Base>::type
- //BOOST_DEDUCED_TYPENAME Base::value_type
+ typename boost::iterator_value<Base>::type
+ //typename Base::value_type
>,
Base
@@ -152,6 +145,6 @@ class remove_whitespace :
typedef filter_iterator<
remove_whitespace_predicate<
- BOOST_DEDUCED_TYPENAME boost::iterator_value<Base>::type
- //BOOST_DEDUCED_TYPENAME Base::value_type
+ typename boost::iterator_value<Base>::type
+ //typename Base::value_type
>,
Base
diff --git a/3rdParty/Boost/src/boost/archive/iterators/transform_width.hpp b/3rdParty/Boost/src/boost/archive/iterators/transform_width.hpp
index 6e2c526..4e11953 100644
--- a/3rdParty/Boost/src/boost/archive/iterators/transform_width.hpp
+++ b/3rdParty/Boost/src/boost/archive/iterators/transform_width.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -25,7 +25,4 @@
// or 3 8 bit characters
-#include <algorithm>
-
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME & PTFO
#include <boost/serialization/pfto.hpp>
@@ -33,4 +30,6 @@
#include <boost/iterator/iterator_traits.hpp>
+#include <algorithm> // std::min
+
namespace boost {
namespace archive {
@@ -44,5 +43,5 @@ template<
int BitsOut,
int BitsIn,
- class CharType = BOOST_DEDUCED_TYPENAME boost::iterator_value<Base>::type // output character
+ class CharType = typename boost::iterator_value<Base>::type // output character
>
class transform_width :
@@ -56,5 +55,5 @@ class transform_width :
{
friend class boost::iterator_core_access;
- typedef BOOST_DEDUCED_TYPENAME boost::iterator_adaptor<
+ typedef typename boost::iterator_adaptor<
transform_width<Base, BitsOut, BitsIn, CharType>,
Base,
@@ -65,50 +64,47 @@ class transform_width :
typedef transform_width<Base, BitsOut, BitsIn, CharType> this_t;
- typedef BOOST_DEDUCED_TYPENAME iterator_value<Base>::type base_value_type;
+ typedef typename iterator_value<Base>::type base_value_type;
- CharType fill();
+ void fill();
- CharType dereference_impl(){
- if(! m_full){
- m_current_value = fill();
- m_full = true;
- }
- return m_current_value;
+ CharType dereference() const {
+ if(!m_buffer_out_full)
+ const_cast<this_t *>(this)->fill();
+ return m_buffer_out;
}
- CharType dereference() const {
- return const_cast<this_t *>(this)->dereference_impl();
+ bool equal_impl(const this_t & rhs){
+ if(BitsIn < BitsOut) // discard any left over bits
+ return this->base_reference() == rhs.base_reference();
+ else{
+ // BitsIn > BitsOut // zero fill
+ if(this->base_reference() == rhs.base_reference()){
+ m_end_of_sequence = true;
+ return 0 == m_remaining_bits;
+ }
+ return false;
+ }
}
- // test for iterator equality
+ // standard iterator interface
bool equal(const this_t & rhs) const {
- return
- this->base_reference() == rhs.base_reference();
- ;
+ return const_cast<this_t *>(this)->equal_impl(rhs);
}
void increment(){
- m_displacement += BitsOut;
-
- while(m_displacement >= BitsIn){
- m_displacement -= BitsIn;
- if(0 == m_displacement)
- m_bufferfull = false;
- if(! m_bufferfull){
- // note: suspect that this is not invoked for borland
- ++(this->base_reference());
- }
- }
- m_full = false;
+ m_buffer_out_full = false;
}
- CharType m_current_value;
- // number of bits left in current input character buffer
- unsigned int m_displacement;
- base_value_type m_buffer;
- // flag to current output character is ready - just used to save time
- bool m_full;
- // flag to indicate that m_buffer has data
- bool m_bufferfull;
+ bool m_buffer_out_full;
+ CharType m_buffer_out;
+
+ // last read element from input
+ base_value_type m_buffer_in;
+
+ // number of bits to left in the input buffer.
+ unsigned int m_remaining_bits;
+
+ // flag to indicate we've reached end of data.
+ bool m_end_of_sequence;
public:
@@ -117,49 +113,60 @@ public:
transform_width(BOOST_PFTO_WRAPPER(T) start) :
super_t(Base(BOOST_MAKE_PFTO_WRAPPER(static_cast< T >(start)))),
- m_displacement(0),
- m_full(false),
- m_bufferfull(false)
+ m_buffer_out_full(false),
+ // To disable GCC warning, but not truly necessary
+ //(m_buffer_in will be initialized later before being
+ //used because m_remaining_bits == 0)
+ m_buffer_in(0),
+ m_remaining_bits(0),
+ m_end_of_sequence(false)
{}
// intel 7.1 doesn't like default copy constructor
transform_width(const transform_width & rhs) :
super_t(rhs.base_reference()),
- m_current_value(rhs.m_current_value),
- m_displacement(rhs.m_displacement),
- m_buffer(rhs.m_buffer),
- m_full(rhs.m_full),
- m_bufferfull(rhs.m_bufferfull)
+ m_buffer_out_full(rhs.m_buffer_out_full),
+ m_buffer_in(rhs.m_buffer_in),
+ m_remaining_bits(rhs.m_remaining_bits),
+ m_end_of_sequence(false)
{}
};
-template<class Base, int BitsOut, int BitsIn, class CharType>
-CharType transform_width<Base, BitsOut, BitsIn, CharType>::fill(){
- CharType retval = 0;
+template<
+ class Base,
+ int BitsOut,
+ int BitsIn,
+ class CharType
+>
+void transform_width<Base, BitsOut, BitsIn, CharType>::fill() {
unsigned int missing_bits = BitsOut;
- for(;;){
- unsigned int bcount;
- if(! m_bufferfull){
- m_buffer = * this->base_reference();
- m_bufferfull = true;
- bcount = BitsIn;
+ m_buffer_out = 0;
+ do{
+ if(0 == m_remaining_bits){
+ if(m_end_of_sequence){
+ m_buffer_in = 0;
+ m_remaining_bits = missing_bits;
+ }
+ else{
+ m_buffer_in = * this->base_reference()++;
+ m_remaining_bits = BitsIn;
+ }
}
- else
- bcount = BitsIn - m_displacement;
- unsigned int i = (std::min)(bcount, missing_bits);
+
+ // append these bits to the next output
+ // up to the size of the output
+ unsigned int i = std::min(missing_bits, m_remaining_bits);
// shift interesting bits to least significant position
- unsigned int j = m_buffer >> (bcount - i);
- // strip off uninteresting bits
- // (note presumption of two's complement arithmetic)
- j &= ~(-(1 << i));
+ base_value_type j = m_buffer_in >> (m_remaining_bits - i);
+ // and mask off the un interesting higher bits
+ // note presumption of twos complement notation
+ j &= (1 << i) - 1;
// append then interesting bits to the output value
- retval <<= i;
- retval |= j;
+ m_buffer_out <<= i;
+ m_buffer_out |= j;
+
+ // and update counters
missing_bits -= i;
- if(0 == missing_bits)
- break;
- // note: suspect that this is not invoked for borland 5.51
- ++(this->base_reference());
- m_bufferfull = false;
- }
- return retval;
+ m_remaining_bits -= i;
+ }while(0 < missing_bits);
+ m_buffer_out_full = true;
}
diff --git a/3rdParty/Boost/src/boost/archive/iterators/unescape.hpp b/3rdParty/Boost/src/boost/archive/iterators/unescape.hpp
index 9cbd316..abf6240 100644
--- a/3rdParty/Boost/src/boost/archive/iterators/unescape.hpp
+++ b/3rdParty/Boost/src/boost/archive/iterators/unescape.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -19,7 +19,5 @@
#include <boost/assert.hpp>
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
#include <boost/iterator/iterator_adaptor.hpp>
-//#include <boost/iterator/iterator_traits.hpp>
#include <boost/pointee.hpp>
@@ -36,22 +34,22 @@ class unescape
unescape<Derived, Base>,
Base,
- BOOST_DEDUCED_TYPENAME pointee<Base>::type,
+ typename pointee<Base>::type,
single_pass_traversal_tag,
- BOOST_DEDUCED_TYPENAME pointee<Base>::type
+ typename pointee<Base>::type
>
{
friend class boost::iterator_core_access;
- typedef BOOST_DEDUCED_TYPENAME boost::iterator_adaptor<
+ typedef typename boost::iterator_adaptor<
unescape<Derived, Base>,
Base,
- BOOST_DEDUCED_TYPENAME pointee<Base>::type,
+ typename pointee<Base>::type,
single_pass_traversal_tag,
- BOOST_DEDUCED_TYPENAME pointee<Base>::type
+ typename pointee<Base>::type
> super_t;
typedef unescape<Derived, Base> this_t;
public:
- typedef BOOST_DEDUCED_TYPENAME this_t::value_type value_type;
- typedef BOOST_DEDUCED_TYPENAME this_t::reference reference;
+ typedef typename this_t::value_type value_type;
+ typedef typename this_t::reference reference;
private:
value_type dereference_impl() {
diff --git a/3rdParty/Boost/src/boost/archive/iterators/wchar_from_mb.hpp b/3rdParty/Boost/src/boost/archive/iterators/wchar_from_mb.hpp
index 4da8121..ab81f17 100644
--- a/3rdParty/Boost/src/boost/archive/iterators/wchar_from_mb.hpp
+++ b/3rdParty/Boost/src/boost/archive/iterators/wchar_from_mb.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -22,5 +22,5 @@
#include <cstdlib> // mblen
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
+#include <boost/config.hpp>
#if defined(BOOST_NO_STDC_NAMESPACE)
namespace std{
@@ -54,5 +54,5 @@ class wchar_from_mb
{
friend class boost::iterator_core_access;
- typedef BOOST_DEDUCED_TYPENAME boost::iterator_adaptor<
+ typedef typename boost::iterator_adaptor<
wchar_from_mb<Base>,
Base,
diff --git a/3rdParty/Boost/src/boost/archive/iterators/xml_escape.hpp b/3rdParty/Boost/src/boost/archive/iterators/xml_escape.hpp
index eadb96e..a5d2c51 100644
--- a/3rdParty/Boost/src/boost/archive/iterators/xml_escape.hpp
+++ b/3rdParty/Boost/src/boost/archive/iterators/xml_escape.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -18,8 +18,5 @@
#include <boost/assert.hpp>
-
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
#include <boost/serialization/pfto.hpp>
-
#include <boost/archive/iterators/escape.hpp>
diff --git a/3rdParty/Boost/src/boost/archive/iterators/xml_unescape.hpp b/3rdParty/Boost/src/boost/archive/iterators/xml_unescape.hpp
index 3295adb..69438ed 100644
--- a/3rdParty/Boost/src/boost/archive/iterators/xml_unescape.hpp
+++ b/3rdParty/Boost/src/boost/archive/iterators/xml_unescape.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -19,6 +19,4 @@
#include <boost/assert.hpp>
-#include <boost/config.hpp> // for BOOST_DEDUCED_TYPENAME
-
#include <boost/serialization/throw_exception.hpp>
#include <boost/serialization/pfto.hpp>
@@ -40,5 +38,5 @@ class xml_unescape
typedef xml_unescape<Base> this_t;
typedef unescape<this_t, Base> super_t;
- typedef BOOST_DEDUCED_TYPENAME boost::iterator_reference<this_t> reference_type;
+ typedef typename boost::iterator_reference<this_t> reference_type;
reference_type dereference() const {
@@ -50,5 +48,5 @@ public:
typedef int value_type;
#else
- typedef BOOST_DEDUCED_TYPENAME this_t::value_type value_type;
+ typedef typename this_t::value_type value_type;
#endif
@@ -84,5 +82,5 @@ void xml_unescape<Base>::drain_residue(const char * literal){
// incorrect and thereby break the composiblity of iterators.
template<class Base>
-BOOST_DEDUCED_TYPENAME xml_unescape<Base>::value_type
+typename xml_unescape<Base>::value_type
//int
xml_unescape<Base>::drain(){
diff --git a/3rdParty/Boost/src/boost/archive/polymorphic_iarchive.hpp b/3rdParty/Boost/src/boost/archive/polymorphic_iarchive.hpp
index 2f76cf2..50488a3 100644
--- a/3rdParty/Boost/src/boost/archive/polymorphic_iarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/polymorphic_iarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -40,6 +40,4 @@ namespace std{
namespace boost {
-template<class T>
-class shared_ptr;
namespace serialization {
class extended_type_info;
@@ -156,16 +154,9 @@ public:
#include <boost/archive/detail/abi_suffix.hpp> // pops abi_suffix.hpp pragmas
-// note special treatment of shared_ptr. This type needs a special
-// structure associated with every archive. We created a "mix-in"
-// class to provide this functionality. Since shared_ptr holds a
-// special esteem in the boost library - we included it here by default.
-#include <boost/archive/shared_ptr_helper.hpp>
-
-namespace boost {
+namespace boost {
namespace archive {
class polymorphic_iarchive :
- public polymorphic_iarchive_impl,
- public detail::shared_ptr_helper
+ public polymorphic_iarchive_impl
{
public:
diff --git a/3rdParty/Boost/src/boost/archive/polymorphic_oarchive.hpp b/3rdParty/Boost/src/boost/archive/polymorphic_oarchive.hpp
index 420029b..1eb9e0b 100644
--- a/3rdParty/Boost/src/boost/archive/polymorphic_oarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/polymorphic_oarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -39,6 +39,4 @@ namespace std{
namespace boost {
-template<class T>
-class shared_ptr;
namespace serialization {
class extended_type_info;
diff --git a/3rdParty/Boost/src/boost/archive/shared_ptr_helper.hpp b/3rdParty/Boost/src/boost/archive/shared_ptr_helper.hpp
deleted file mode 100644
index 39e6eb8..0000000
--- a/3rdParty/Boost/src/boost/archive/shared_ptr_helper.hpp
+++ /dev/null
@@ -1,219 +0,0 @@
-#ifndef BOOST_ARCHIVE_SHARED_PTR_HELPER_HPP
-#define BOOST_ARCHIVE_SHARED_PTR_HELPER_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// shared_ptr_helper.hpp: serialization for boost shared pointern
-
-// (C) Copyright 2004-2009 Robert Ramey, Martin Ecker and Takatoshi Kondo
-// Use, modification and distribution is subject to 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 http://www.boost.org for updates, documentation, and revision history.
-
-#include <set>
-#include <list>
-#include <utility>
-#include <cstddef> // NULL
-
-#include <boost/config.hpp>
-#include <boost/shared_ptr.hpp>
-
-#include <boost/type_traits/is_polymorphic.hpp>
-#include <boost/serialization/type_info_implementation.hpp>
-#include <boost/serialization/shared_ptr_132.hpp>
-#include <boost/serialization/throw_exception.hpp>
-
-#include <boost/archive/archive_exception.hpp>
-#include <boost/archive/detail/decl.hpp>
-
-#include <boost/archive/detail/abi_prefix.hpp> // must be the last headern
-
-namespace boost_132 {
- template<class T> class shared_ptr;
-}
-namespace boost {
- template<class T> class shared_ptr;
- namespace serialization {
- class extended_type_info;
- template<class Archive, class T>
- inline void load(
- Archive & ar,
- boost::shared_ptr< T > &t,
- const unsigned int file_version
- );
- }
-namespace archive{
-namespace detail {
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// a common class for holding various types of shared pointers
-
-class shared_ptr_helper {
- struct collection_type_compare {
- bool operator()(
- const shared_ptr<const void> &lhs,
- const shared_ptr<const void> &rhs
- )const{
- return lhs.get() < rhs.get();
- }
- };
- typedef std::set<
- boost::shared_ptr<const void>,
- collection_type_compare
- > collection_type;
- typedef collection_type::const_iterator iterator_type;
- // list of shared_pointers create accessable by raw pointer. This
- // is used to "match up" shared pointers loaded at different
- // points in the archive. Note, we delay construction until
- // it is actually used since this is by default included as
- // a "mix-in" even if shared_ptr isn't used.
- collection_type * m_pointers;
-
- struct null_deleter {
- void operator()(void const *) const {}
- };
-
- struct void_deleter {
- const boost::serialization::extended_type_info * m_eti;
- void_deleter(const boost::serialization::extended_type_info *eti) :
- m_eti(eti)
- {}
- void operator()(void *vp) const {
- m_eti->destroy(vp);
- }
- };
-
-#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
-public:
-#else
- template<class Archive, class T>
- friend inline void boost::serialization::load(
- Archive & ar,
- boost::shared_ptr< T > &t,
- const unsigned int file_version
- );
-#endif
-
-// #ifdef BOOST_SERIALIZATION_SHARED_PTR_132_HPP
- // list of loaded pointers. This is used to be sure that the pointers
- // stay around long enough to be "matched" with other pointers loaded
- // by the same archive. These are created with a "null_deleter" so that
- // when this list is destroyed - the underlaying raw pointers are not
- // destroyed. This has to be done because the pointers are also held by
- // new system which is disjoint from this set. This is implemented
- // by a change in load_construct_data below. It makes this file suitable
- // only for loading pointers into a 1.33 or later boost system.
- std::list<boost_132::shared_ptr<const void> > * m_pointers_132;
-// #endif
-
- // returns pointer to object and an indicator whether this is a
- // new entry (true) or a previous one (false)
- BOOST_ARCHIVE_DECL(shared_ptr<void>)
- get_od(
- const void * od,
- const boost::serialization::extended_type_info * true_type,
- const boost::serialization::extended_type_info * this_type
- );
-
- BOOST_ARCHIVE_DECL(void)
- append(const boost::shared_ptr<const void> &);
-
- template<class T>
- struct non_polymorphic {
- static const boost::serialization::extended_type_info *
- get_object_identifier(T &){
- return & boost::serialization::singleton<
- BOOST_DEDUCED_TYPENAME
- boost::serialization::type_info_implementation< T >::type
- >::get_const_instance();
- }
- };
- template<class T>
- struct polymorphic {
- static const boost::serialization::extended_type_info *
- get_object_identifier(T & t){
- return boost::serialization::singleton<
- BOOST_DEDUCED_TYPENAME
- boost::serialization::type_info_implementation< T >::type
- >::get_const_instance().get_derived_extended_type_info(t);
- }
- };
-public:
- template<class T>
- void reset(shared_ptr< T > & s, T * t){
- if(NULL == t){
- s.reset();
- return;
- }
- const boost::serialization::extended_type_info * this_type
- = & boost::serialization::type_info_implementation< T >::type
- ::get_const_instance();
-
- // get pointer to the most derived object. This is effectively
- // the object identifern
- typedef BOOST_DEDUCED_TYPENAME mpl::eval_if<
- is_polymorphic< T >,
- mpl::identity<polymorphic< T > >,
- mpl::identity<non_polymorphic< T > >
- >::type type;
-
- const boost::serialization::extended_type_info * true_type
- = type::get_object_identifier(*t);
-
- // note:if this exception is thrown, be sure that derived pointern
- // is either registered or exported.
- if(NULL == true_type)
- boost::serialization::throw_exception(
- archive_exception(
- archive_exception::unregistered_class,
- this_type->get_debug_info()
- )
- );
- shared_ptr<void> r =
- get_od(
- static_cast<const void *>(t),
- true_type,
- this_type
- );
- if(!r){
- s.reset(t);
- const void * od = void_downcast(
- *true_type,
- *this_type,
- static_cast<const void *>(t)
- );
- shared_ptr<const void> sp(s, od);
- append(sp);
- }
- else{
- s = shared_ptr< T >(
- r,
- static_cast<T *>(r.get())
- );
- }
- }
-
-// #ifdef BOOST_SERIALIZATION_SHARED_PTR_132_HPP
- BOOST_ARCHIVE_DECL(void)
- append(const boost_132::shared_ptr<const void> & t);
-// #endif
-public:
- BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY())
- shared_ptr_helper();
- BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY())
- ~shared_ptr_helper();
-};
-
-} // namespace detail
-} // namespace archive
-} // namespace boost
-
-#include <boost/archive/detail/abi_suffix.hpp> // pops abi_suffix.hpp pragmas
-
-#endif // BOOST_ARCHIVE_SHARED_PTR_HELPER_HPP
diff --git a/3rdParty/Boost/src/boost/archive/text_iarchive.hpp b/3rdParty/Boost/src/boost/archive/text_iarchive.hpp
index 298928b..1fd0f60 100644
--- a/3rdParty/Boost/src/boost/archive/text_iarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/text_iarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -36,4 +36,8 @@ namespace boost {
namespace archive {
+namespace detail {
+ template<class Archive> class interface_iarchive;
+} // namespace detail
+
template<class Archive>
class text_iarchive_impl :
@@ -44,8 +48,14 @@ class text_iarchive_impl :
public:
#else
- friend class detail::interface_iarchive<Archive>;
- friend class basic_text_iarchive<Archive>;
- friend class load_access;
protected:
+ #if BOOST_WORKAROUND(BOOST_MSVC, < 1500)
+ // for some inexplicable reason insertion of "class" generates compile erro
+ // on msvc 7.1
+ friend detail::interface_iarchive<Archive>;
+ friend load_access;
+ #else
+ friend class detail::interface_iarchive<Archive>;
+ friend class load_access;
+ #endif
#endif
template<class T>
@@ -93,20 +103,4 @@ protected:
};
-// do not derive from the classes below. If you want to extend this functionality
-// via inhertance, derived from text_iarchive_impl instead. This will
-// preserve correct static polymorphism.
-
-// same as text_iarchive below - without the shared_ptr_helper
-class naked_text_iarchive :
- public text_iarchive_impl<naked_text_iarchive>
-{
-public:
- naked_text_iarchive(std::istream & is_, unsigned int flags = 0) :
- // note: added _ to suppress useless gcc warning
- text_iarchive_impl<naked_text_iarchive>(is_, flags)
- {}
- ~naked_text_iarchive(){}
-};
-
} // namespace archive
} // namespace boost
@@ -118,10 +112,4 @@ public:
#include <boost/archive/detail/abi_suffix.hpp> // pops abi_suffix.hpp pragmas
-// note special treatment of shared_ptr. This type needs a special
-// structure associated with every archive. We created a "mix-in"
-// class to provide this functionality. Since shared_ptr holds a
-// special esteem in the boost library - we included it here by default.
-#include <boost/archive/shared_ptr_helper.hpp>
-
#ifdef BOOST_MSVC
# pragma warning(push)
@@ -133,7 +121,5 @@ namespace archive {
class text_iarchive :
- public text_iarchive_impl<text_iarchive>,
- public detail::shared_ptr_helper
-{
+ public text_iarchive_impl<text_iarchive>{
public:
text_iarchive(std::istream & is_, unsigned int flags = 0) :
diff --git a/3rdParty/Boost/src/boost/archive/text_oarchive.hpp b/3rdParty/Boost/src/boost/archive/text_oarchive.hpp
index 2100d53..9fd63a9 100644
--- a/3rdParty/Boost/src/boost/archive/text_oarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/text_oarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -43,4 +43,8 @@ namespace boost {
namespace archive {
+namespace detail {
+ template<class Archive> class interface_oarchive;
+} // namespace detail
+
template<class Archive>
class text_oarchive_impl :
@@ -51,8 +55,16 @@ class text_oarchive_impl :
public:
#else
- friend class detail::interface_oarchive<Archive>;
- friend class basic_text_oarchive<Archive>;
- friend class save_access;
protected:
+ #if BOOST_WORKAROUND(BOOST_MSVC, < 1500)
+ // for some inexplicable reason insertion of "class" generates compile erro
+ // on msvc 7.1
+ friend detail::interface_oarchive<Archive>;
+ friend basic_text_oarchive<Archive>;
+ friend save_access;
+ #else
+ friend class detail::interface_oarchive<Archive>;
+ friend class basic_text_oarchive<Archive>;
+ friend class save_access;
+ #endif
#endif
template<class T>
@@ -103,6 +115,4 @@ public:
};
-typedef text_oarchive naked_text_oarchive;
-
} // namespace archive
} // namespace boost
diff --git a/3rdParty/Boost/src/boost/archive/text_wiarchive.hpp b/3rdParty/Boost/src/boost/archive/text_wiarchive.hpp
index 7451f3a..5105d35 100644
--- a/3rdParty/Boost/src/boost/archive/text_wiarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/text_wiarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -40,4 +40,8 @@ namespace boost {
namespace archive {
+namespace detail {
+ template<class Archive> class interface_iarchive;
+} // namespace detail
+
template<class Archive>
class text_wiarchive_impl :
@@ -48,8 +52,14 @@ class text_wiarchive_impl :
public:
#else
- friend class detail::interface_iarchive<Archive>;
- friend class basic_text_iarchive<Archive>;
- friend class load_access;
protected:
+ #if BOOST_WORKAROUND(BOOST_MSVC, < 1500)
+ // for some inexplicable reason insertion of "class" generates compile erro
+ // on msvc 7.1
+ friend detail::interface_iarchive<Archive>;
+ friend load_access;
+ #else
+ friend class detail::interface_iarchive<Archive>;
+ friend class load_access;
+ #endif
#endif
template<class T>
@@ -90,19 +100,4 @@ protected:
};
-// do not derive from the classes below. If you want to extend this functionality
-// via inhertance, derived from text_iarchive_impl instead. This will
-// preserve correct static polymorphism.
-
-// same as text_wiarchive below - without the shared_ptr_helper
-class naked_text_wiarchive :
- public text_wiarchive_impl<naked_text_wiarchive>
-{
-public:
- naked_text_wiarchive(std::wistream & is, unsigned int flags = 0) :
- text_wiarchive_impl<naked_text_wiarchive>(is, flags)
- {}
- ~naked_text_wiarchive(){}
-};
-
} // namespace archive
} // namespace boost
@@ -114,10 +109,4 @@ public:
#include <boost/archive/detail/abi_suffix.hpp> // pops abi_suffix.hpp pragmas
-// note special treatment of shared_ptr. This type needs a special
-// structure associated with every archive. We created a "mix-in"
-// class to provide this functionality. Since shared_ptr holds a
-// special esteem in the boost library - we included it here by default.
-#include <boost/archive/shared_ptr_helper.hpp>
-
#ifdef BOOST_MSVC
# pragma warning(push)
@@ -129,7 +118,5 @@ namespace archive {
class text_wiarchive :
- public text_wiarchive_impl<text_wiarchive>,
- public detail::shared_ptr_helper
-{
+ public text_wiarchive_impl<text_wiarchive>{
public:
text_wiarchive(std::wistream & is, unsigned int flags = 0) :
diff --git a/3rdParty/Boost/src/boost/archive/text_woarchive.hpp b/3rdParty/Boost/src/boost/archive/text_woarchive.hpp
index 7ed0c82..2f75204 100644
--- a/3rdParty/Boost/src/boost/archive/text_woarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/text_woarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -48,4 +48,8 @@ namespace boost {
namespace archive {
+namespace detail {
+ template<class Archive> class interface_oarchive;
+} // namespace detail
+
template<class Archive>
class text_woarchive_impl :
@@ -56,8 +60,16 @@ class text_woarchive_impl :
public:
#else
- friend class detail::interface_oarchive<Archive>;
- friend class basic_text_oarchive<Archive>;
- friend class save_access;
protected:
+ #if BOOST_WORKAROUND(BOOST_MSVC, < 1500)
+ // for some inexplicable reason insertion of "class" generates compile erro
+ // on msvc 7.1
+ friend detail::interface_oarchive<Archive>;
+ friend basic_text_oarchive<Archive>;
+ friend save_access;
+ #else
+ friend class detail::interface_oarchive<Archive>;
+ friend class basic_text_oarchive<Archive>;
+ friend class save_access;
+ #endif
#endif
template<class T>
@@ -128,6 +140,4 @@ public:
};
-typedef text_woarchive naked_text_woarchive;
-
} // namespace archive
} // namespace boost
diff --git a/3rdParty/Boost/src/boost/archive/wcslen.hpp b/3rdParty/Boost/src/boost/archive/wcslen.hpp
index 5c14acf..2a3d635 100644
--- a/3rdParty/Boost/src/boost/archive/wcslen.hpp
+++ b/3rdParty/Boost/src/boost/archive/wcslen.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/xml_archive_exception.hpp b/3rdParty/Boost/src/boost/archive/xml_archive_exception.hpp
index 48e6cb3..622cafe 100644
--- a/3rdParty/Boost/src/boost/archive/xml_archive_exception.hpp
+++ b/3rdParty/Boost/src/boost/archive/xml_archive_exception.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
diff --git a/3rdParty/Boost/src/boost/archive/xml_iarchive.hpp b/3rdParty/Boost/src/boost/archive/xml_iarchive.hpp
index be6cfe4..ba50d7c 100644
--- a/3rdParty/Boost/src/boost/archive/xml_iarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/xml_iarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -36,4 +36,8 @@ namespace boost {
namespace archive {
+namespace detail {
+ template<class Archive> class interface_iarchive;
+} // namespace detail
+
template<class CharType>
class basic_xml_grammar;
@@ -48,8 +52,16 @@ class xml_iarchive_impl :
public:
#else
- friend class detail::interface_iarchive<Archive>;
- friend class basic_xml_iarchive<Archive>;
- friend class load_access;
protected:
+ #if BOOST_WORKAROUND(BOOST_MSVC, < 1500)
+ // for some inexplicable reason insertion of "class" generates compile erro
+ // on msvc 7.1
+ friend detail::interface_iarchive<Archive>;
+ friend basic_xml_iarchive<Archive>;
+ friend load_access;
+ #else
+ friend class detail::interface_iarchive<Archive>;
+ friend class basic_xml_iarchive<Archive>;
+ friend class load_access;
+ #endif
#endif
// instances of micro xml parser to parse start preambles
@@ -103,19 +115,4 @@ protected:
};
-// do not derive from the classes below. If you want to extend this functionality
-// via inhertance, derived from text_iarchive_impl instead. This will
-// preserve correct static polymorphism.
-
-// same as xml_iarchive below - without the shared_ptr_helper
-class naked_xml_iarchive :
- public xml_iarchive_impl<naked_xml_iarchive>
-{
-public:
- naked_xml_iarchive(std::istream & is, unsigned int flags = 0) :
- xml_iarchive_impl<naked_xml_iarchive>(is, flags)
- {}
- ~naked_xml_iarchive(){}
-};
-
} // namespace archive
} // namespace boost
@@ -126,11 +123,4 @@ public:
#include <boost/archive/detail/abi_suffix.hpp> // pops abi_suffix.hpp pragmas
-
-// note special treatment of shared_ptr. This type needs a special
-// structure associated with every archive. We created a "mix-in"
-// class to provide this functionality. Since shared_ptr holds a
-// special esteem in the boost library - we included it here by default.
-#include <boost/archive/shared_ptr_helper.hpp>
-
#ifdef BOOST_MSVC
# pragma warning(push)
@@ -142,7 +132,5 @@ namespace archive {
class xml_iarchive :
- public xml_iarchive_impl<xml_iarchive>,
- public detail::shared_ptr_helper
-{
+ public xml_iarchive_impl<xml_iarchive>{
public:
xml_iarchive(std::istream & is, unsigned int flags = 0) :
diff --git a/3rdParty/Boost/src/boost/archive/xml_oarchive.hpp b/3rdParty/Boost/src/boost/archive/xml_oarchive.hpp
index 167ba09..2ac4ae1 100644
--- a/3rdParty/Boost/src/boost/archive/xml_oarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/xml_oarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -43,4 +43,8 @@ namespace boost {
namespace archive {
+namespace detail {
+ template<class Archive> class interface_oarchive;
+} // namespace detail
+
template<class Archive>
class xml_oarchive_impl :
@@ -51,8 +55,16 @@ class xml_oarchive_impl :
public:
#else
- friend class detail::interface_oarchive<Archive>;
- friend class basic_xml_oarchive<Archive>;
- friend class save_access;
protected:
+ #if BOOST_WORKAROUND(BOOST_MSVC, < 1500)
+ // for some inexplicable reason insertion of "class" generates compile erro
+ // on msvc 7.1
+ friend detail::interface_oarchive<Archive>;
+ friend basic_xml_oarchive<Archive>;
+ friend save_access;
+ #else
+ friend class detail::interface_oarchive<Archive>;
+ friend class basic_xml_oarchive<Archive>;
+ friend class save_access;
+ #endif
#endif
//void end_preamble(){
@@ -117,6 +129,4 @@ public:
};
-typedef xml_oarchive naked_xml_oarchive;
-
} // namespace archive
} // namespace boost
diff --git a/3rdParty/Boost/src/boost/archive/xml_wiarchive.hpp b/3rdParty/Boost/src/boost/archive/xml_wiarchive.hpp
index 59ebbb5..31aff88 100644
--- a/3rdParty/Boost/src/boost/archive/xml_wiarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/xml_wiarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -41,4 +41,8 @@ namespace boost {
namespace archive {
+namespace detail {
+ template<class Archive> class interface_iarchive;
+} // namespace detail
+
template<class CharType>
class basic_xml_grammar;
@@ -53,8 +57,16 @@ class xml_wiarchive_impl :
public:
#else
- friend class detail::interface_iarchive<Archive>;
- friend class basic_xml_iarchive<Archive>;
- friend class load_access;
protected:
+ #if BOOST_WORKAROUND(BOOST_MSVC, < 1500)
+ // for some inexplicable reason insertion of "class" generates compile erro
+ // on msvc 7.1
+ friend detail::interface_iarchive<Archive>;
+ friend basic_xml_iarchive<Archive>;
+ friend load_access;
+ #else
+ friend class detail::interface_iarchive<Archive>;
+ friend class basic_xml_iarchive<Archive>;
+ friend class load_access;
+ #endif
#endif
// instances of micro xml parser to parse start preambles
@@ -108,19 +120,4 @@ protected:
};
-// do not derive from the classes below. If you want to extend this functionality
-// via inhertance, derived from xml_wiarchive_impl instead. This will
-// preserve correct static polymorphism.
-
-// same as xml_wiarchive below - without the shared_ptr_helper
-class naked_xml_wiarchive :
- public xml_wiarchive_impl<naked_xml_wiarchive>
-{
-public:
- naked_xml_wiarchive(std::wistream & is, unsigned int flags = 0) :
- xml_wiarchive_impl<naked_xml_wiarchive>(is, flags)
- {}
- ~naked_xml_wiarchive(){}
-};
-
} // namespace archive
} // namespace boost
@@ -132,10 +129,4 @@ public:
#include <boost/archive/detail/abi_suffix.hpp> // pops abi_suffix.hpp pragmas
-// note special treatment of shared_ptr. This type needs a special
-// structure associated with every archive. We created a "mix-in"
-// class to provide this functionality. Since shared_ptr holds a
-// special esteem in the boost library - we included it here by default.
-#include <boost/archive/shared_ptr_helper.hpp>
-
#ifdef BOOST_MSVC
# pragma warning(push)
@@ -147,7 +138,5 @@ namespace archive {
class xml_wiarchive :
- public xml_wiarchive_impl<xml_wiarchive>,
- public detail::shared_ptr_helper
-{
+ public xml_wiarchive_impl<xml_wiarchive>{
public:
xml_wiarchive(std::wistream & is, unsigned int flags = 0) :
diff --git a/3rdParty/Boost/src/boost/archive/xml_woarchive.hpp b/3rdParty/Boost/src/boost/archive/xml_woarchive.hpp
index 08c0fdc..7fcaeb9 100644
--- a/3rdParty/Boost/src/boost/archive/xml_woarchive.hpp
+++ b/3rdParty/Boost/src/boost/archive/xml_woarchive.hpp
@@ -3,5 +3,5 @@
// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#if defined(_MSC_VER)
# pragma once
#endif
@@ -47,4 +47,8 @@ namespace boost {
namespace archive {
+namespace detail {
+ template<class Archive> class interface_oarchive;
+} // namespace detail
+
template<class Archive>
class xml_woarchive_impl :
@@ -55,9 +59,18 @@ class xml_woarchive_impl :
public:
#else
- friend class detail::interface_oarchive<Archive>;
- friend class basic_xml_oarchive<Archive>;
- friend class save_access;
protected:
+ #if BOOST_WORKAROUND(BOOST_MSVC, < 1500)
+ // for some inexplicable reason insertion of "class" generates compile erro
+ // on msvc 7.1
+ friend detail::interface_oarchive<Archive>;
+ friend basic_xml_oarchive<Archive>;
+ friend save_access;
+ #else
+ friend class detail::interface_oarchive<Archive>;
+ friend class basic_xml_oarchive<Archive>;
+ friend class save_access;
+ #endif
#endif
+
//void end_preamble(){
// basic_xml_oarchive<Archive>::end_preamble();
@@ -123,6 +136,4 @@ public:
};
-typedef xml_woarchive naked_xml_woarchive;
-
} // namespace archive
} // namespace boost