From 45610e25e4a29a1e25899a1ce423800b23000a5f Mon Sep 17 00:00:00 2001 From: Robert Ramey Date: Tue, 29 Sep 2015 12:32:23 -0700 Subject: [PATCH] changes to support visibility - by Edward Diener --- include/boost/archive/archive_exception.hpp | 1 + include/boost/archive/detail/basic_oarchive.hpp | 4 +--- include/boost/archive/polymorphic_iarchive.hpp | 2 +- include/boost/archive/xml_archive_exception.hpp | 2 ++ src/archive_exception.cpp | 14 +++++++++++++- src/basic_oarchive.cpp | 5 +++++ src/xml_archive_exception.cpp | 8 ++++++++ 7 files changed, 31 insertions(+), 5 deletions(-) diff --git a/include/boost/archive/archive_exception.hpp b/include/boost/archive/archive_exception.hpp index 1159d277..fabcdb5f 100644 --- a/include/boost/archive/archive_exception.hpp +++ b/include/boost/archive/archive_exception.hpp @@ -87,6 +87,7 @@ public: 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/include/boost/archive/detail/basic_oarchive.hpp b/include/boost/archive/detail/basic_oarchive.hpp index fd06c834..c379108d 100644 --- a/include/boost/archive/detail/basic_oarchive.hpp +++ b/include/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(); virtual BOOST_ARCHIVE_DECL ~basic_oarchive(); public: // note: NOT part of the public interface diff --git a/include/boost/archive/polymorphic_iarchive.hpp b/include/boost/archive/polymorphic_iarchive.hpp index 7f19410d..b465bb10 100644 --- a/include/boost/archive/polymorphic_iarchive.hpp +++ b/include/boost/archive/polymorphic_iarchive.hpp @@ -44,7 +44,7 @@ namespace serialization { namespace archive { namespace detail { class BOOST_ARCHIVE_DECL basic_iarchive; - class BOOST_ARCHIVE_DECL basic_iarchive; + class BOOST_ARCHIVE_DECL basic_iserializer; } class polymorphic_iarchive; diff --git a/include/boost/archive/xml_archive_exception.hpp b/include/boost/archive/xml_archive_exception.hpp index b07f9a0c..82c53ef5 100644 --- a/include/boost/archive/xml_archive_exception.hpp +++ b/include/boost/archive/xml_archive_exception.hpp @@ -45,6 +45,8 @@ public: const char * e1 = NULL, const char * e2 = NULL ); + BOOST_ARCHIVE_DECL xml_archive_exception(xml_archive_exception const &) ; + virtual BOOST_ARCHIVE_DECL ~xml_archive_exception() BOOST_NOEXCEPT_OR_NOTHROW ; }; }// namespace archive diff --git a/src/archive_exception.cpp b/src/archive_exception.cpp index b850f899..5ff4b5f3 100644 --- a/src/archive_exception.cpp +++ b/src/archive_exception.cpp @@ -14,6 +14,7 @@ #include #include +#include #define BOOST_ARCHIVE_SOURCE #include @@ -21,6 +22,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)){ @@ -109,13 +111,23 @@ archive_exception::archive_exception( break; } } + +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); +} + 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) diff --git a/src/basic_oarchive.cpp b/src/basic_oarchive.cpp index c99baeb4..18522afa 100644 --- a/src/basic_oarchive.cpp +++ b/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 diff --git a/src/xml_archive_exception.cpp b/src/xml_archive_exception.cpp index c1431e27..f4bf8960 100644 --- a/src/xml_archive_exception.cpp +++ b/src/xml_archive_exception.cpp @@ -51,6 +51,14 @@ 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 xml_archive_exception::~xml_archive_exception() BOOST_NOEXCEPT_OR_NOTHROW {} } // archive } // boost