From d635772bc306b69ec6ad22313d673d0333f863a1 Mon Sep 17 00:00:00 2001 From: Edward Diener Date: Mon, 20 Jul 2015 23:35:19 -0400 Subject: [PATCH 1/5] Added missing decl attribute --- src/archive_exception.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/archive_exception.cpp b/src/archive_exception.cpp index b850f89..38c6c9c 100644 --- a/libs/serialization/src/archive_exception.cpp +++ b/libs/serialization/src/archive_exception.cpp @@ -21,6 +21,7 @@ namespace boost { namespace archive { +BOOST_ARCHIVE_DECL unsigned int archive_exception::append(unsigned int l, const char * a){ while(l < (sizeof(m_buffer) - 1)){ From 0386df9cba448c6256d18fc542b8f21cec626dee Mon Sep 17 00:00:00 2001 From: Edward Diener Date: Mon, 20 Jul 2015 23:36:46 -0400 Subject: [PATCH 2/5] Move inline function out of line since it is being exported/imported. This fixes a problem with gcc. --- include/boost/archive/detail/basic_oarchive.hpp | 4 +--- src/basic_oarchive.cpp | 5 +++++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/include/boost/archive/detail/basic_oarchive.hpp b/include/boost/archive/detail/basic_oarchive.hpp index 702c560..03ad17b 100644 --- a/boost/archive/detail/basic_oarchive.hpp +++ b/boost/archive/detail/basic_oarchive.hpp @@ -61,9 +61,7 @@ class BOOST_SYMBOL_VISIBLE basic_oarchive : protected: BOOST_ARCHIVE_DECL basic_oarchive(unsigned int flags = 0); BOOST_ARCHIVE_DECL boost::archive::detail::helper_collection & - get_helper_collection(){ - return *this; - } + get_helper_collection(); // account for bogus gcc warning #if defined(__GNUC__) virtual diff --git a/src/basic_oarchive.cpp b/src/basic_oarchive.cpp index c99baeb..18522af 100644 --- a/libs/serialization/src/basic_oarchive.cpp +++ b/libs/serialization/src/basic_oarchive.cpp @@ -454,6 +454,11 @@ BOOST_ARCHIVE_DECL void basic_oarchive::end_preamble(){ } +BOOST_ARCHIVE_DECL helper_collection & +basic_oarchive::get_helper_collection(){ + return *this; +} + } // namespace detail } // namespace archive } // namespace boost From 6b906b43618eea9d783128ec0f4524df89c1dcc8 Mon Sep 17 00:00:00 2001 From: Edward Diener Date: Mon, 27 Jul 2015 17:47:21 -0400 Subject: [PATCH 3/5] Add copy constructor --- include/boost/archive/archive_exception.hpp | 1 + src/archive_exception.cpp | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/include/boost/archive/archive_exception.hpp b/include/boost/archive/archive_exception.hpp index 1159d27..fabcdb5 100644 --- a/boost/archive/archive_exception.hpp +++ b/boost/archive/archive_exception.hpp @@ -87,6 +87,7 @@ class BOOST_SYMBOL_VISIBLE archive_exception : const char * e1 = NULL, const char * e2 = NULL ) BOOST_NOEXCEPT; + BOOST_ARCHIVE_DECL archive_exception(archive_exception const &) BOOST_NOEXCEPT ; virtual BOOST_ARCHIVE_DECL ~archive_exception() BOOST_NOEXCEPT_OR_NOTHROW ; virtual BOOST_ARCHIVE_DECL const char * what() const BOOST_NOEXCEPT_OR_NOTHROW ; }; diff --git a/src/archive_exception.cpp b/src/archive_exception.cpp index 38c6c9c..94aae50 100644 --- a/libs/serialization/src/archive_exception.cpp +++ b/libs/serialization/src/archive_exception.cpp @@ -14,6 +14,7 @@ #include #include +#include #define BOOST_ARCHIVE_SOURCE #include @@ -110,13 +111,22 @@ archive_exception::archive_exception( break; } } + +BOOST_ARCHIVE_DECL +archive_exception::archive_exception(archive_exception const & oth) BOOST_NOEXCEPT : + code(oth.code) +{ + std::memcpy(m_buffer,oth.m_buffer,sizeof m_buffer); +} + BOOST_ARCHIVE_DECL archive_exception::~archive_exception() BOOST_NOEXCEPT_OR_NOTHROW {} BOOST_ARCHIVE_DECL const char * -archive_exception::what( ) const BOOST_NOEXCEPT_OR_NOTHROW { +archive_exception::what() const BOOST_NOEXCEPT_OR_NOTHROW { return m_buffer; } + BOOST_ARCHIVE_DECL archive_exception::archive_exception() BOOST_NOEXCEPT : code(no_exception) From 643fff144cee5b518cd7b07d8a619564c0b8b1d1 Mon Sep 17 00:00:00 2001 From: Edward Diener Date: Fri, 31 Jul 2015 06:46:14 -0400 Subject: [PATCH 4/5] Changes for wide character serialization --- include/boost/archive/detail/interface_oarchive.hpp | 2 +- include/boost/archive/polymorphic_iarchive.hpp | 4 ++-- include/boost/archive/polymorphic_oarchive.hpp | 4 ++-- include/boost/archive/xml_archive_exception.hpp | 2 ++ src/archive_exception.cpp | 1 + src/xml_archive_exception.cpp | 12 ++++++++++++ 6 files changed, 20 insertions(+), 5 deletions(-) diff --git a/include/boost/archive/detail/interface_oarchive.hpp b/include/boost/archive/detail/interface_oarchive.hpp index 187013b..ad067f8 100644 --- a/boost/archive/detail/interface_oarchive.hpp +++ b/boost/archive/detail/interface_oarchive.hpp @@ -29,7 +29,7 @@ namespace boost { namespace archive { namespace detail { -class BOOST_ARCHIVE_OR_WARCHIVE_DECL basic_pointer_oserializer; +class BOOST_SYMBOL_VISIBLE basic_pointer_oserializer; template class interface_oarchive diff --git a/include/boost/archive/polymorphic_iarchive.hpp b/include/boost/archive/polymorphic_iarchive.hpp index 7f19410..57fda71 100644 --- a/boost/archive/polymorphic_iarchive.hpp +++ b/boost/archive/polymorphic_iarchive.hpp @@ -43,8 +43,8 @@ namespace serialization { } // namespace serialization namespace archive { namespace detail { - class BOOST_ARCHIVE_DECL basic_iarchive; - class BOOST_ARCHIVE_DECL basic_iarchive; + class BOOST_SYMBOL_VISIBLE basic_iarchive; + class BOOST_SYMBOL_VISIBLE basic_iserializer; } class polymorphic_iarchive; diff --git a/include/boost/archive/polymorphic_oarchive.hpp b/include/boost/archive/polymorphic_oarchive.hpp index aa30b2a..bf543b0 100644 --- a/boost/archive/polymorphic_oarchive.hpp +++ b/boost/archive/polymorphic_oarchive.hpp @@ -42,8 +42,8 @@ namespace serialization { } // namespace serialization namespace archive { namespace detail { - class BOOST_ARCHIVE_DECL basic_oarchive; - class BOOST_ARCHIVE_DECL basic_oserializer; + class BOOST_SYMBOL_VISIBLE basic_oarchive; + class BOOST_SYMBOL_VISIBLE basic_oserializer; } class polymorphic_oarchive; diff --git a/include/boost/archive/xml_archive_exception.hpp b/include/boost/archive/xml_archive_exception.hpp index b07f9a0..45e4731 100644 --- a/boost/archive/xml_archive_exception.hpp +++ b/boost/archive/xml_archive_exception.hpp @@ -45,6 +45,8 @@ class BOOST_SYMBOL_VISIBLE xml_archive_exception : const char * e1 = NULL, const char * e2 = NULL ); + BOOST_ARCHIVE_DECL xml_archive_exception(xml_archive_exception const &) ; + BOOST_ARCHIVE_DECL const char * what() const BOOST_NOEXCEPT_OR_NOTHROW ; }; }// namespace archive diff --git a/src/archive_exception.cpp b/src/archive_exception.cpp index 94aae50..5ff4b5f 100644 --- a/libs/serialization/src/archive_exception.cpp +++ b/libs/serialization/src/archive_exception.cpp @@ -114,6 +114,7 @@ archive_exception::archive_exception( BOOST_ARCHIVE_DECL archive_exception::archive_exception(archive_exception const & oth) BOOST_NOEXCEPT : + std::exception(oth), code(oth.code) { std::memcpy(m_buffer,oth.m_buffer,sizeof m_buffer); diff --git a/src/xml_archive_exception.cpp b/src/xml_archive_exception.cpp index c1431e2..37144d3 100644 --- a/libs/serialization/src/xml_archive_exception.cpp +++ b/libs/serialization/src/xml_archive_exception.cpp @@ -51,6 +51,18 @@ xml_archive_exception::xml_archive_exception( break; } } + +BOOST_ARCHIVE_DECL +xml_archive_exception::xml_archive_exception(xml_archive_exception const & oth) : + archive_exception(oth) + { + } + +BOOST_ARCHIVE_DECL const char * +xml_archive_exception::what() const BOOST_NOEXCEPT_OR_NOTHROW + { + return archive_exception::what(); + } } // archive } // boost From 1f769b8cd914fceb981fe6a15309e1e5e5b67958 Mon Sep 17 00:00:00 2001 From: Edward Diener Date: Sun, 2 Aug 2015 17:48:11 -0400 Subject: [PATCH 5/5] Backed out some unnecessary changes for the build. The main change is the exporting/importing of the destructor, which does nothing, for xml_archive_exception. --- include/boost/archive/detail/interface_oarchive.hpp | 2 +- include/boost/archive/polymorphic_iarchive.hpp | 4 ++-- include/boost/archive/polymorphic_oarchive.hpp | 4 ++-- include/boost/archive/xml_archive_exception.hpp | 2 +- src/xml_archive_exception.cpp | 6 +----- 5 files changed, 7 insertions(+), 11 deletions(-) diff --git a/include/boost/archive/detail/interface_oarchive.hpp b/include/boost/archive/detail/interface_oarchive.hpp index ad067f8..187013b 100644 --- a/boost/archive/detail/interface_oarchive.hpp +++ b/boost/archive/detail/interface_oarchive.hpp @@ -29,7 +29,7 @@ namespace boost { namespace archive { namespace detail { -class BOOST_SYMBOL_VISIBLE basic_pointer_oserializer; +class BOOST_ARCHIVE_OR_WARCHIVE_DECL basic_pointer_oserializer; template class interface_oarchive diff --git a/include/boost/archive/polymorphic_iarchive.hpp b/include/boost/archive/polymorphic_iarchive.hpp index 57fda71..b465bb1 100644 --- a/boost/archive/polymorphic_iarchive.hpp +++ b/boost/archive/polymorphic_iarchive.hpp @@ -43,8 +43,8 @@ namespace serialization { } // namespace serialization namespace archive { namespace detail { - class BOOST_SYMBOL_VISIBLE basic_iarchive; - class BOOST_SYMBOL_VISIBLE basic_iserializer; + class BOOST_ARCHIVE_DECL basic_iarchive; + class BOOST_ARCHIVE_DECL basic_iserializer; } class polymorphic_iarchive; diff --git a/include/boost/archive/polymorphic_oarchive.hpp b/include/boost/archive/polymorphic_oarchive.hpp index bf543b0..aa30b2a 100644 --- a/boost/archive/polymorphic_oarchive.hpp +++ b/boost/archive/polymorphic_oarchive.hpp @@ -42,8 +42,8 @@ namespace serialization { } // namespace serialization namespace archive { namespace detail { - class BOOST_SYMBOL_VISIBLE basic_oarchive; - class BOOST_SYMBOL_VISIBLE basic_oserializer; + class BOOST_ARCHIVE_DECL basic_oarchive; + class BOOST_ARCHIVE_DECL basic_oserializer; } class polymorphic_oarchive; diff --git a/include/boost/archive/xml_archive_exception.hpp b/include/boost/archive/xml_archive_exception.hpp index 45e4731..82c53ef 100644 --- a/boost/archive/xml_archive_exception.hpp +++ b/boost/archive/xml_archive_exception.hpp @@ -46,7 +46,7 @@ class BOOST_SYMBOL_VISIBLE xml_archive_exception : const char * e2 = NULL ); BOOST_ARCHIVE_DECL xml_archive_exception(xml_archive_exception const &) ; - BOOST_ARCHIVE_DECL const char * what() const BOOST_NOEXCEPT_OR_NOTHROW ; + virtual BOOST_ARCHIVE_DECL ~xml_archive_exception() BOOST_NOEXCEPT_OR_NOTHROW ; }; }// namespace archive diff --git a/src/xml_archive_exception.cpp b/src/xml_archive_exception.cpp index 37144d3..f4bf896 100644 --- a/libs/serialization/src/xml_archive_exception.cpp +++ b/libs/serialization/src/xml_archive_exception.cpp @@ -58,11 +58,7 @@ xml_archive_exception::xml_archive_exception(xml_archive_exception const & oth) { } -BOOST_ARCHIVE_DECL const char * -xml_archive_exception::what() const BOOST_NOEXCEPT_OR_NOTHROW - { - return archive_exception::what(); - } +BOOST_ARCHIVE_DECL xml_archive_exception::~xml_archive_exception() BOOST_NOEXCEPT_OR_NOTHROW {} } // archive } // boost