From 23b012ef66aa55182dd60fccbb93082bc8a0b96d Mon Sep 17 00:00:00 2001 From: Robert Ramey Date: Wed, 22 Apr 2015 22:02:56 -0700 Subject: [PATCH] enhancement to support gcc visibility. These changes are meant to support gcc visibility on mingw platforms - which is basically gcc with windows attributes. --- include/boost/archive/archive_exception.hpp | 2 +- include/boost/archive/basic_binary_iarchive.hpp | 2 +- .../boost/archive/basic_binary_iprimitive.hpp | 2 +- include/boost/archive/basic_binary_oarchive.hpp | 2 +- .../boost/archive/basic_binary_oprimitive.hpp | 2 +- include/boost/archive/basic_text_iarchive.hpp | 2 +- include/boost/archive/basic_text_iprimitive.hpp | 2 +- include/boost/archive/basic_text_oarchive.hpp | 2 +- include/boost/archive/basic_text_oprimitive.hpp | 2 +- include/boost/archive/basic_xml_iarchive.hpp | 2 +- include/boost/archive/basic_xml_oarchive.hpp | 2 +- include/boost/archive/binary_iarchive.hpp | 2 +- include/boost/archive/binary_oarchive.hpp | 2 +- .../archive/detail/archive_serializer_map.hpp | 2 +- include/boost/archive/detail/basic_iarchive.hpp | 2 +- .../boost/archive/detail/basic_iserializer.hpp | 2 +- include/boost/archive/detail/basic_oarchive.hpp | 2 +- .../boost/archive/detail/basic_oserializer.hpp | 2 +- .../archive/detail/basic_pointer_iserializer.hpp | 2 +- .../archive/detail/basic_pointer_oserializer.hpp | 2 +- .../archive/detail/basic_serializer_map.hpp | 2 +- include/boost/archive/detail/decl.hpp | 16 +++++++++++++--- .../boost/archive/detail/interface_iarchive.hpp | 2 +- include/boost/archive/polymorphic_iarchive.hpp | 4 ++-- include/boost/archive/polymorphic_oarchive.hpp | 4 ++-- include/boost/archive/text_iarchive.hpp | 4 ++-- include/boost/archive/text_oarchive.hpp | 4 ++-- include/boost/archive/text_wiarchive.hpp | 4 ++-- include/boost/archive/text_woarchive.hpp | 4 ++-- include/boost/archive/xml_archive_exception.hpp | 2 +- include/boost/archive/xml_iarchive.hpp | 4 ++-- include/boost/archive/xml_oarchive.hpp | 4 ++-- include/boost/archive/xml_wiarchive.hpp | 4 ++-- include/boost/archive/xml_woarchive.hpp | 4 ++-- include/boost/serialization/config.hpp | 12 ++++++++---- .../boost/serialization/extended_type_info.hpp | 2 +- .../serialization/extended_type_info_no_rtti.hpp | 2 +- .../serialization/extended_type_info_typeid.hpp | 4 ++-- include/boost/serialization/singleton.hpp | 3 ++- include/boost/serialization/void_cast.hpp | 14 +++++++------- src/basic_archive.cpp | 4 ++-- src/basic_iarchive.cpp | 1 - src/basic_xml_archive.cpp | 16 ++++++++-------- src/void_cast.cpp | 4 ++-- 44 files changed, 89 insertions(+), 75 deletions(-) diff --git a/include/boost/archive/archive_exception.hpp b/include/boost/archive/archive_exception.hpp index 1159d277..6cde3d1e 100644 --- a/include/boost/archive/archive_exception.hpp +++ b/include/boost/archive/archive_exception.hpp @@ -39,7 +39,7 @@ namespace archive { ////////////////////////////////////////////////////////////////////// // exceptions thrown by archives // -class BOOST_SYMBOL_VISIBLE archive_exception : +class BOOST_ARCHIVE_SYMBOL_VISIBLE archive_exception : public virtual std::exception { private: diff --git a/include/boost/archive/basic_binary_iarchive.hpp b/include/boost/archive/basic_binary_iarchive.hpp index c0cc655c..1c00c1a4 100644 --- a/include/boost/archive/basic_binary_iarchive.hpp +++ b/include/boost/archive/basic_binary_iarchive.hpp @@ -50,7 +50,7 @@ namespace detail { ///////////////////////////////////////////////////////////////////////// // class basic_binary_iarchive - read serialized objects from a input binary stream template -class BOOST_SYMBOL_VISIBLE basic_binary_iarchive : +class BOOST_ARCHIVE_OR_WARCHIVE_SYMBOL_VISIBLE basic_binary_iarchive : public detail::common_iarchive { #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS diff --git a/include/boost/archive/basic_binary_iprimitive.hpp b/include/boost/archive/basic_binary_iprimitive.hpp index 5e826310..94fb8cd0 100644 --- a/include/boost/archive/basic_binary_iprimitive.hpp +++ b/include/boost/archive/basic_binary_iprimitive.hpp @@ -67,7 +67,7 @@ class codecvt_null; ///////////////////////////////////////////////////////////////////////////// // class binary_iarchive - read serialized objects from a input binary stream template -class BOOST_SYMBOL_VISIBLE basic_binary_iprimitive { +class BOOST_ARCHIVE_OR_WARCHIVE_SYMBOL_VISIBLE basic_binary_iprimitive { #ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS friend class load_access; protected: diff --git a/include/boost/archive/basic_binary_oarchive.hpp b/include/boost/archive/basic_binary_oarchive.hpp index f05f2f86..6483cb16 100644 --- a/include/boost/archive/basic_binary_oarchive.hpp +++ b/include/boost/archive/basic_binary_oarchive.hpp @@ -58,7 +58,7 @@ namespace detail { // does have the virtue of buiding the smalles archive in the minimum amount // of time. So under some circumstances it may be he right choice. template -class BOOST_SYMBOL_VISIBLE basic_binary_oarchive : +class BOOST_ARCHIVE_OR_WARCHIVE_SYMBOL_VISIBLE basic_binary_oarchive : public detail::common_oarchive { #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS diff --git a/include/boost/archive/basic_binary_oprimitive.hpp b/include/boost/archive/basic_binary_oprimitive.hpp index 077d705e..b045575e 100644 --- a/include/boost/archive/basic_binary_oprimitive.hpp +++ b/include/boost/archive/basic_binary_oprimitive.hpp @@ -61,7 +61,7 @@ class codecvt_null; // class basic_binary_oprimitive - binary output of prmitives template -class BOOST_SYMBOL_VISIBLE basic_binary_oprimitive { +class BOOST_ARCHIVE_OR_WARCHIVE_SYMBOL_VISIBLE basic_binary_oprimitive { #ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS friend class save_access; protected: diff --git a/include/boost/archive/basic_text_iarchive.hpp b/include/boost/archive/basic_text_iarchive.hpp index 583041d8..94684acc 100644 --- a/include/boost/archive/basic_text_iarchive.hpp +++ b/include/boost/archive/basic_text_iarchive.hpp @@ -46,7 +46,7 @@ namespace detail { ///////////////////////////////////////////////////////////////////////// // class basic_text_iarchive - read serialized objects from a input text stream template -class BOOST_SYMBOL_VISIBLE basic_text_iarchive : +class BOOST_ARCHIVE_OR_WARCHIVE_SYMBOL_VISIBLE basic_text_iarchive : public detail::common_iarchive { #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS diff --git a/include/boost/archive/basic_text_iprimitive.hpp b/include/boost/archive/basic_text_iprimitive.hpp index 08da95c3..9ff36f8e 100644 --- a/include/boost/archive/basic_text_iprimitive.hpp +++ b/include/boost/archive/basic_text_iprimitive.hpp @@ -64,7 +64,7 @@ namespace archive { #endif template -class BOOST_SYMBOL_VISIBLE basic_text_iprimitive { +class BOOST_ARCHIVE_OR_WARCHIVE_SYMBOL_VISIBLE basic_text_iprimitive { protected: IStream &is; io::ios_flags_saver flags_saver; diff --git a/include/boost/archive/basic_text_oarchive.hpp b/include/boost/archive/basic_text_oarchive.hpp index 6f7f8fb1..db8404ac 100644 --- a/include/boost/archive/basic_text_oarchive.hpp +++ b/include/boost/archive/basic_text_oarchive.hpp @@ -46,7 +46,7 @@ namespace detail { ///////////////////////////////////////////////////////////////////////// // class basic_text_oarchive template -class BOOST_SYMBOL_VISIBLE basic_text_oarchive : +class BOOST_ARCHIVE_OR_WARCHIVE_SYMBOL_VISIBLE basic_text_oarchive : public detail::common_oarchive { #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS diff --git a/include/boost/archive/basic_text_oprimitive.hpp b/include/boost/archive/basic_text_oprimitive.hpp index 86330921..7a9a86be 100644 --- a/include/boost/archive/basic_text_oprimitive.hpp +++ b/include/boost/archive/basic_text_oprimitive.hpp @@ -64,7 +64,7 @@ namespace archive { ///////////////////////////////////////////////////////////////////////// // class basic_text_oprimitive - output of prmitives to stream template -class BOOST_SYMBOL_VISIBLE basic_text_oprimitive +class BOOST_ARCHIVE_OR_WARCHIVE_SYMBOL_VISIBLE basic_text_oprimitive { protected: OStream &os; diff --git a/include/boost/archive/basic_xml_iarchive.hpp b/include/boost/archive/basic_xml_iarchive.hpp index 152d0238..175432ed 100644 --- a/include/boost/archive/basic_xml_iarchive.hpp +++ b/include/boost/archive/basic_xml_iarchive.hpp @@ -43,7 +43,7 @@ namespace detail { ///////////////////////////////////////////////////////////////////////// // class xml_iarchive - read serialized objects from a input text stream template -class BOOST_SYMBOL_VISIBLE basic_xml_iarchive : +class BOOST_ARCHIVE_OR_WARCHIVE_SYMBOL_VISIBLE basic_xml_iarchive : public detail::common_iarchive { #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS diff --git a/include/boost/archive/basic_xml_oarchive.hpp b/include/boost/archive/basic_xml_oarchive.hpp index 4970772e..2206ba0c 100644 --- a/include/boost/archive/basic_xml_oarchive.hpp +++ b/include/boost/archive/basic_xml_oarchive.hpp @@ -44,7 +44,7 @@ namespace detail { ////////////////////////////////////////////////////////////////////// // class basic_xml_oarchive - write serialized objects to a xml output stream template -class BOOST_SYMBOL_VISIBLE basic_xml_oarchive : +class BOOST_ARCHIVE_OR_WARCHIVE_SYMBOL_VISIBLE basic_xml_oarchive : public detail::common_oarchive { #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS diff --git a/include/boost/archive/binary_iarchive.hpp b/include/boost/archive/binary_iarchive.hpp index 785ce761..557a8871 100644 --- a/include/boost/archive/binary_iarchive.hpp +++ b/include/boost/archive/binary_iarchive.hpp @@ -31,7 +31,7 @@ namespace archive { // do not derive from this class. If you want to extend this functionality // via inhertance, derived from binary_iarchive_impl instead. This will // preserve correct static polymorphism. -class BOOST_SYMBOL_VISIBLE binary_iarchive : +class BOOST_ARCHIVE_SYMBOL_VISIBLE binary_iarchive : public binary_iarchive_impl< boost::archive::binary_iarchive, std::istream::char_type, diff --git a/include/boost/archive/binary_oarchive.hpp b/include/boost/archive/binary_oarchive.hpp index e8313fd7..4cea466e 100644 --- a/include/boost/archive/binary_oarchive.hpp +++ b/include/boost/archive/binary_oarchive.hpp @@ -32,7 +32,7 @@ namespace archive { // do not derive from this class. If you want to extend this functionality // via inhertance, derived from binary_oarchive_impl instead. This will // preserve correct static polymorphism. -class BOOST_SYMBOL_VISIBLE binary_oarchive : +class BOOST_ARCHIVE_SYMBOL_VISIBLE binary_oarchive : public binary_oarchive_impl< binary_oarchive, std::ostream::char_type, std::ostream::traits_type > diff --git a/include/boost/archive/detail/archive_serializer_map.hpp b/include/boost/archive/detail/archive_serializer_map.hpp index 5432bfc7..55894be8 100644 --- a/include/boost/archive/detail/archive_serializer_map.hpp +++ b/include/boost/archive/detail/archive_serializer_map.hpp @@ -36,7 +36,7 @@ namespace detail { class basic_serializer; template -class BOOST_SYMBOL_VISIBLE archive_serializer_map { +class BOOST_ARCHIVE_OR_WARCHIVE_SYMBOL_VISIBLE archive_serializer_map { public: static BOOST_ARCHIVE_OR_WARCHIVE_DECL bool insert(const basic_serializer * bs); static BOOST_ARCHIVE_OR_WARCHIVE_DECL void erase(const basic_serializer * bs); diff --git a/include/boost/archive/detail/basic_iarchive.hpp b/include/boost/archive/detail/basic_iarchive.hpp index fb05b413..5b53c560 100644 --- a/include/boost/archive/detail/basic_iarchive.hpp +++ b/include/boost/archive/detail/basic_iarchive.hpp @@ -42,7 +42,7 @@ class basic_pointer_iserializer; ////////////////////////////////////////////////////////////////////// // class basic_iarchive - read serialized objects from a input stream -class BOOST_SYMBOL_VISIBLE basic_iarchive : +class BOOST_ARCHIVE_SYMBOL_VISIBLE basic_iarchive : private boost::noncopyable, public boost::archive::detail::helper_collection { diff --git a/include/boost/archive/detail/basic_iserializer.hpp b/include/boost/archive/detail/basic_iserializer.hpp index 240f0bc0..4889d51c 100644 --- a/include/boost/archive/detail/basic_iserializer.hpp +++ b/include/boost/archive/detail/basic_iserializer.hpp @@ -42,7 +42,7 @@ namespace detail { class basic_iarchive; class basic_pointer_iserializer; -class BOOST_SYMBOL_VISIBLE basic_iserializer : +class BOOST_ARCHIVE_SYMBOL_VISIBLE basic_iserializer : public basic_serializer { private: diff --git a/include/boost/archive/detail/basic_oarchive.hpp b/include/boost/archive/detail/basic_oarchive.hpp index 702c5604..a912910b 100644 --- a/include/boost/archive/detail/basic_oarchive.hpp +++ b/include/boost/archive/detail/basic_oarchive.hpp @@ -40,7 +40,7 @@ class basic_pointer_oserializer; ////////////////////////////////////////////////////////////////////// // class basic_oarchive - write serialized objects to an output stream -class BOOST_SYMBOL_VISIBLE basic_oarchive : +class BOOST_ARCHIVE_SYMBOL_VISIBLE basic_oarchive : private boost::noncopyable, public boost::archive::detail::helper_collection { diff --git a/include/boost/archive/detail/basic_oserializer.hpp b/include/boost/archive/detail/basic_oserializer.hpp index 7a710ba6..1870b128 100644 --- a/include/boost/archive/detail/basic_oserializer.hpp +++ b/include/boost/archive/detail/basic_oserializer.hpp @@ -43,7 +43,7 @@ namespace detail { class basic_oarchive; class basic_pointer_oserializer; -class BOOST_SYMBOL_VISIBLE basic_oserializer : +class BOOST_ARCHIVE_SYMBOL_VISIBLE basic_oserializer : public basic_serializer { private: diff --git a/include/boost/archive/detail/basic_pointer_iserializer.hpp b/include/boost/archive/detail/basic_pointer_iserializer.hpp index 23b9f906..ab362571 100644 --- a/include/boost/archive/detail/basic_pointer_iserializer.hpp +++ b/include/boost/archive/detail/basic_pointer_iserializer.hpp @@ -40,7 +40,7 @@ namespace detail { class basic_iarchive; class basic_iserializer; -class BOOST_SYMBOL_VISIBLE basic_pointer_iserializer +class BOOST_ARCHIVE_SYMBOL_VISIBLE basic_pointer_iserializer : public basic_serializer { protected: explicit BOOST_ARCHIVE_DECL basic_pointer_iserializer( diff --git a/include/boost/archive/detail/basic_pointer_oserializer.hpp b/include/boost/archive/detail/basic_pointer_oserializer.hpp index 868e2fa5..8a266eed 100644 --- a/include/boost/archive/detail/basic_pointer_oserializer.hpp +++ b/include/boost/archive/detail/basic_pointer_oserializer.hpp @@ -39,7 +39,7 @@ namespace detail { class basic_oarchive; class basic_oserializer; -class BOOST_SYMBOL_VISIBLE basic_pointer_oserializer : +class BOOST_ARCHIVE_SYMBOL_VISIBLE basic_pointer_oserializer : public basic_serializer { protected: diff --git a/include/boost/archive/detail/basic_serializer_map.hpp b/include/boost/archive/detail/basic_serializer_map.hpp index 79341803..0d13f05d 100644 --- a/include/boost/archive/detail/basic_serializer_map.hpp +++ b/include/boost/archive/detail/basic_serializer_map.hpp @@ -34,7 +34,7 @@ namespace detail { class basic_serializer; -class BOOST_SYMBOL_VISIBLE +class BOOST_ARCHIVE_SYMBOL_VISIBLE basic_serializer_map : public boost::noncopyable { diff --git a/include/boost/archive/detail/decl.hpp b/include/boost/archive/detail/decl.hpp index ae67fb23..ed5f8355 100644 --- a/include/boost/archive/detail/decl.hpp +++ b/include/boost/archive/detail/decl.hpp @@ -28,7 +28,7 @@ #if defined(BOOST_ARCHIVE_SOURCE) #define BOOST_ARCHIVE_DECL BOOST_SYMBOL_EXPORT #define BOOST_ARCHIVE_OR_WARCHIVE_DECL BOOST_SYMBOL_EXPORT - #define BOOST_SYMBOL_VISIBLE BOOST_SYMBOL_EXPORT + #define BOOST_ARCHIVE_SYMBOL_VISIBLE BOOST_SYMBOL_EXPORT #else #define BOOST_ARCHIVE_DECL BOOST_SYMBOL_IMPORT #endif @@ -54,7 +54,17 @@ #define BOOST_ARCHIVE_OR_WARCHIVE_DECL #endif -#undef BOOST_SYMBOL_VISIBLE -#define BOOST_SYMBOL_VISIBLE BOOST_ARCHIVE_DECL +// All Win32 development environments, including 64-bit Windows and MinGW, define +// _WIN32 or one of its variant spellings. Note that Cygwin is a POSIX environment, +// so does not define _WIN32 or its variants. +#if (defined(_WIN32) || defined(__WIN32__) || defined(WIN32)) && !defined(__CYGWIN__) + #define BOOST_ARCHIVE_SYMBOL_VISIBLE BOOST_ARCHIVE_DECL + #define BOOST_WARCHIVE_SYMBOL_VISIBLE BOOST_WARCHIVE_DECL + #define BOOST_ARCHIVE_OR_WARCHIVE_SYMBOL_VISIBLE BOOST_ARCHIVE_OR_WARCHIVE_DECL +#else + #define BOOST_ARCHIVE_SYMBOL_VISIBLE BOOST_SYMBOL_VISIBLE + #define BOOST_WARCHIVE_SYMBOL_VISIBLE BOOST_SYMBOL_VISIBLE + #define BOOST_ARCHIVE_OR_WARCHIVE_SYMBOL_VISIBLE BOOST_SYMBOL_VISIBLE +#endif #endif // BOOST_ARCHIVE_DETAIL_DECL_HPP diff --git a/include/boost/archive/detail/interface_iarchive.hpp b/include/boost/archive/detail/interface_iarchive.hpp index 68fff62f..4a99e28b 100644 --- a/include/boost/archive/detail/interface_iarchive.hpp +++ b/include/boost/archive/detail/interface_iarchive.hpp @@ -28,7 +28,7 @@ namespace boost { namespace archive { namespace detail { -class BOOST_ARCHIVE_OR_WARCHIVE_DECL basic_pointer_iserializer; +class basic_pointer_iserializer; template class interface_iarchive diff --git a/include/boost/archive/polymorphic_iarchive.hpp b/include/boost/archive/polymorphic_iarchive.hpp index e84e634f..b8ed1882 100644 --- a/include/boost/archive/polymorphic_iarchive.hpp +++ b/include/boost/archive/polymorphic_iarchive.hpp @@ -49,7 +49,7 @@ namespace detail { class polymorphic_iarchive; -class BOOST_SYMBOL_VISIBLE polymorphic_iarchive_impl : +class BOOST_ARCHIVE_SYMBOL_VISIBLE polymorphic_iarchive_impl : public detail::interface_iarchive { #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS @@ -155,7 +155,7 @@ public: namespace boost { namespace archive { -class BOOST_SYMBOL_VISIBLE polymorphic_iarchive : +class BOOST_ARCHIVE_SYMBOL_VISIBLE polymorphic_iarchive : public polymorphic_iarchive_impl { public: diff --git a/include/boost/archive/polymorphic_oarchive.hpp b/include/boost/archive/polymorphic_oarchive.hpp index 1cf31bc5..cca43fa3 100644 --- a/include/boost/archive/polymorphic_oarchive.hpp +++ b/include/boost/archive/polymorphic_oarchive.hpp @@ -48,7 +48,7 @@ namespace detail { class polymorphic_oarchive; -class BOOST_SYMBOL_VISIBLE polymorphic_oarchive_impl : +class BOOST_ARCHIVE_SYMBOL_VISIBLE polymorphic_oarchive_impl : public detail::interface_oarchive { #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS @@ -139,7 +139,7 @@ public: }; // note: preserve naming symmetry -class BOOST_SYMBOL_VISIBLE polymorphic_oarchive : +class BOOST_ARCHIVE_SYMBOL_VISIBLE polymorphic_oarchive : public polymorphic_oarchive_impl { public: diff --git a/include/boost/archive/text_iarchive.hpp b/include/boost/archive/text_iarchive.hpp index e40db837..bed08333 100644 --- a/include/boost/archive/text_iarchive.hpp +++ b/include/boost/archive/text_iarchive.hpp @@ -40,7 +40,7 @@ namespace detail { } // namespace detail template -class BOOST_SYMBOL_VISIBLE text_iarchive_impl : +class BOOST_ARCHIVE_SYMBOL_VISIBLE text_iarchive_impl : public basic_text_iprimitive, public basic_text_iarchive { @@ -116,7 +116,7 @@ protected: namespace boost { namespace archive { -class BOOST_SYMBOL_VISIBLE text_iarchive : +class BOOST_ARCHIVE_SYMBOL_VISIBLE text_iarchive : public text_iarchive_impl{ public: text_iarchive(std::istream & is_, unsigned int flags = 0) : diff --git a/include/boost/archive/text_oarchive.hpp b/include/boost/archive/text_oarchive.hpp index 7eaea172..bd72a30e 100644 --- a/include/boost/archive/text_oarchive.hpp +++ b/include/boost/archive/text_oarchive.hpp @@ -47,7 +47,7 @@ namespace detail { } // namespace detail template -class BOOST_SYMBOL_VISIBLE text_oarchive_impl : +class BOOST_ARCHIVE_SYMBOL_VISIBLE text_oarchive_impl : /* protected ? */ public basic_text_oprimitive, public basic_text_oarchive { @@ -103,7 +103,7 @@ public: // do not derive from this class. If you want to extend this functionality // via inhertance, derived from text_oarchive_impl instead. This will // preserve correct static polymorphism. -class BOOST_SYMBOL_VISIBLE text_oarchive : +class BOOST_ARCHIVE_SYMBOL_VISIBLE text_oarchive : public text_oarchive_impl { public: diff --git a/include/boost/archive/text_wiarchive.hpp b/include/boost/archive/text_wiarchive.hpp index 3adf068a..ea37ee05 100644 --- a/include/boost/archive/text_wiarchive.hpp +++ b/include/boost/archive/text_wiarchive.hpp @@ -44,7 +44,7 @@ namespace detail { } // namespace detail template -class BOOST_SYMBOL_VISIBLE text_wiarchive_impl : +class BOOST_WARCHIVE_SYMBOL_VISIBLE text_wiarchive_impl : public basic_text_iprimitive, public basic_text_iarchive { @@ -114,7 +114,7 @@ protected: namespace boost { namespace archive { -class BOOST_SYMBOL_VISIBLE text_wiarchive : +class BOOST_ARCHIVE_SYMBOL_VISIBLE text_wiarchive : public text_wiarchive_impl{ public: text_wiarchive(std::wistream & is, unsigned int flags = 0) : diff --git a/include/boost/archive/text_woarchive.hpp b/include/boost/archive/text_woarchive.hpp index b6b4f8ed..3fc7af35 100644 --- a/include/boost/archive/text_woarchive.hpp +++ b/include/boost/archive/text_woarchive.hpp @@ -52,7 +52,7 @@ namespace detail { } // namespace detail template -class BOOST_SYMBOL_VISIBLE text_woarchive_impl : +class BOOST_WARCHIVE_SYMBOL_VISIBLE text_woarchive_impl : public basic_text_oprimitive, public basic_text_oarchive { @@ -129,7 +129,7 @@ public: // do not derive from this class. If you want to extend this functionality // via inhertance, derived from text_oarchive_impl instead. This will // preserve correct static polymorphism. -class BOOST_SYMBOL_VISIBLE text_woarchive : +class BOOST_ARCHIVE_SYMBOL_VISIBLE text_woarchive : public text_woarchive_impl { public: diff --git a/include/boost/archive/xml_archive_exception.hpp b/include/boost/archive/xml_archive_exception.hpp index b07f9a0c..bf57cb97 100644 --- a/include/boost/archive/xml_archive_exception.hpp +++ b/include/boost/archive/xml_archive_exception.hpp @@ -31,7 +31,7 @@ namespace archive { ////////////////////////////////////////////////////////////////////// // exceptions thrown by xml archives // -class BOOST_SYMBOL_VISIBLE xml_archive_exception : +class BOOST_ARCHIVE_SYMBOL_VISIBLE xml_archive_exception : public virtual boost::archive::archive_exception { public: diff --git a/include/boost/archive/xml_iarchive.hpp b/include/boost/archive/xml_iarchive.hpp index 055ba0f4..c0037aef 100644 --- a/include/boost/archive/xml_iarchive.hpp +++ b/include/boost/archive/xml_iarchive.hpp @@ -44,7 +44,7 @@ class basic_xml_grammar; typedef basic_xml_grammar xml_grammar; template -class BOOST_SYMBOL_VISIBLE xml_iarchive_impl : +class BOOST_ARCHIVE_SYMBOL_VISIBLE xml_iarchive_impl : public basic_text_iprimitive, public basic_xml_iarchive { @@ -128,7 +128,7 @@ protected: namespace boost { namespace archive { -class BOOST_SYMBOL_VISIBLE xml_iarchive : +class BOOST_ARCHIVE_SYMBOL_VISIBLE xml_iarchive : public xml_iarchive_impl{ public: xml_iarchive(std::istream & is, unsigned int flags = 0) : diff --git a/include/boost/archive/xml_oarchive.hpp b/include/boost/archive/xml_oarchive.hpp index c5e6da92..f02364f4 100644 --- a/include/boost/archive/xml_oarchive.hpp +++ b/include/boost/archive/xml_oarchive.hpp @@ -47,7 +47,7 @@ namespace detail { } // namespace detail template -class BOOST_SYMBOL_VISIBLE xml_oarchive_impl : +class BOOST_ARCHIVE_SYMBOL_VISIBLE xml_oarchive_impl : public basic_text_oprimitive, public basic_xml_oarchive { @@ -118,7 +118,7 @@ public: // do not derive from this class. If you want to extend this functionality // via inhertance, derived from xml_oarchive_impl instead. This will // preserve correct static polymorphism. -class BOOST_SYMBOL_VISIBLE xml_oarchive : +class BOOST_ARCHIVE_SYMBOL_VISIBLE xml_oarchive : public xml_oarchive_impl { public: diff --git a/include/boost/archive/xml_wiarchive.hpp b/include/boost/archive/xml_wiarchive.hpp index dbc2d721..f9d08ea1 100644 --- a/include/boost/archive/xml_wiarchive.hpp +++ b/include/boost/archive/xml_wiarchive.hpp @@ -58,7 +58,7 @@ class basic_xml_grammar; typedef basic_xml_grammar xml_wgrammar; template -class BOOST_SYMBOL_VISIBLE xml_wiarchive_impl : +class BOOST_WARCHIVE_SYMBOL_VISIBLE xml_wiarchive_impl : public basic_text_iprimitive, public basic_xml_iarchive { @@ -142,7 +142,7 @@ protected: namespace boost { namespace archive { -class BOOST_SYMBOL_VISIBLE xml_wiarchive : +class BOOST_ARCHIVE_SYMBOL_VISIBLE xml_wiarchive : public xml_wiarchive_impl{ public: xml_wiarchive(std::wistream & is, unsigned int flags = 0) : diff --git a/include/boost/archive/xml_woarchive.hpp b/include/boost/archive/xml_woarchive.hpp index 62700162..618124e7 100644 --- a/include/boost/archive/xml_woarchive.hpp +++ b/include/boost/archive/xml_woarchive.hpp @@ -61,7 +61,7 @@ namespace detail { } // namespace detail template -class BOOST_SYMBOL_VISIBLE xml_woarchive_impl : +class BOOST_ARCHIVE_SYMBOL_VISIBLE xml_woarchive_impl : public basic_text_oprimitive, public basic_xml_oarchive { @@ -135,7 +135,7 @@ public: // do not derive from this class. If you want to extend this functionality // via inhertance, derived from xml_woarchive_impl instead. This will // preserve correct static polymorphism. -class BOOST_SYMBOL_VISIBLE xml_woarchive : +class BOOST_WARCHIVE_SYMBOL_VISIBLE xml_woarchive : public xml_woarchive_impl { public: diff --git a/include/boost/serialization/config.hpp b/include/boost/serialization/config.hpp index 8e5ac9cf..6321e777 100644 --- a/include/boost/serialization/config.hpp +++ b/include/boost/serialization/config.hpp @@ -50,10 +50,14 @@ #define BOOST_SERIALIZATION_DECL #endif -#undef BOOST_SYMBOL_VISIBLE -#define BOOST_SYMBOL_VISIBLE BOOST_SERIALIZATION_DECL - -// enable automatic library variant selection ------------------------------// +// All Win32 development environments, including 64-bit Windows and MinGW, define +// _WIN32 or one of its variant spellings. Note that Cygwin is a POSIX environment, +// so does not define _WIN32 or its variants. +#if (defined(_WIN32) || defined(__WIN32__) || defined(WIN32)) && !defined(__CYGWIN__) + #define BOOST_SERIALIZATION_SYMBOL_VISIBLE BOOST_SERIALIZATION_DECL +#else + #define BOOST_SERIALIZATION_SYMBOL_VISIBLE BOOST_SYMBOL_VISIBLE +#endif #if !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_SERIALIZATION_NO_LIB) \ && !defined(BOOST_ARCHIVE_SOURCE) && !defined(BOOST_WARCHIVE_SOURCE) \ diff --git a/include/boost/serialization/extended_type_info.hpp b/include/boost/serialization/extended_type_info.hpp index c96a576e..a7b8a810 100644 --- a/include/boost/serialization/extended_type_info.hpp +++ b/include/boost/serialization/extended_type_info.hpp @@ -41,7 +41,7 @@ namespace void_cast_detail{ class void_caster; } -class BOOST_SYMBOL_VISIBLE extended_type_info : +class BOOST_SERIALIZATION_SYMBOL_VISIBLE extended_type_info : private boost::noncopyable { private: diff --git a/include/boost/serialization/extended_type_info_no_rtti.hpp b/include/boost/serialization/extended_type_info_no_rtti.hpp index aaa8b444..c3380130 100644 --- a/include/boost/serialization/extended_type_info_no_rtti.hpp +++ b/include/boost/serialization/extended_type_info_no_rtti.hpp @@ -52,7 +52,7 @@ namespace no_rtti_system { // common base class to share type_info_key. This is used to // identify the method used to keep track of the extended type -class BOOST_SYMBOL_VISIBLE extended_type_info_no_rtti_0 : +class BOOST_SERIALIZATION_SYMBOL_VISIBLE extended_type_info_no_rtti_0 : public extended_type_info { protected: diff --git a/include/boost/serialization/extended_type_info_typeid.hpp b/include/boost/serialization/extended_type_info_typeid.hpp index d9e99e03..b8841258 100644 --- a/include/boost/serialization/extended_type_info_typeid.hpp +++ b/include/boost/serialization/extended_type_info_typeid.hpp @@ -49,7 +49,7 @@ namespace boost { namespace serialization { namespace typeid_system { -class BOOST_SYMBOL_VISIBLE extended_type_info_typeid_0 : +class BOOST_SERIALIZATION_SYMBOL_VISIBLE extended_type_info_typeid_0 : public extended_type_info { virtual const char * get_debug_info() const { @@ -78,7 +78,7 @@ public: } // typeid_system template -class extended_type_info_typeid : +class BOOST_SERIALIZATION_SYMBOL_VISIBLE extended_type_info_typeid : public typeid_system::extended_type_info_typeid_0, public singleton > { diff --git a/include/boost/serialization/singleton.hpp b/include/boost/serialization/singleton.hpp index a397da57..e98efb81 100644 --- a/include/boost/serialization/singleton.hpp +++ b/include/boost/serialization/singleton.hpp @@ -38,6 +38,7 @@ #include #include #include +#include #ifdef BOOST_MSVC # pragma warning(push) @@ -77,7 +78,7 @@ namespace serialization { // attempt to retieve a mutable instances while locked will // generate a assertion if compiled for debug. -class BOOST_SYMBOL_VISIBLE singleton_module : +class BOOST_SERIALIZATION_SYMBOL_VISIBLE singleton_module : public boost::noncopyable { private: diff --git a/include/boost/serialization/void_cast.hpp b/include/boost/serialization/void_cast.hpp index f1b38286..8059ff72 100644 --- a/include/boost/serialization/void_cast.hpp +++ b/include/boost/serialization/void_cast.hpp @@ -54,7 +54,7 @@ void_upcast( void const * const t ); -inline void * +BOOST_SERIALIZATION_DECL inline void * void_upcast( extended_type_info const & derived, extended_type_info const & base, @@ -74,7 +74,7 @@ void_downcast( void const * const t ); -inline void * +BOOST_SERIALIZATION_DECL inline void * void_downcast( extended_type_info const & derived, extended_type_info const & base, @@ -89,7 +89,7 @@ void_downcast( namespace void_cast_detail { -class BOOST_SYMBOL_VISIBLE void_caster : +class BOOST_SERIALIZATION_SYMBOL_VISIBLE void_caster : private boost::noncopyable { friend @@ -151,7 +151,7 @@ public: #endif template -class BOOST_SYMBOL_VISIBLE void_caster_primitive : +class BOOST_SERIALIZATION_SYMBOL_VISIBLE void_caster_primitive : public void_caster { virtual void const * downcast(void const * const t) const { @@ -199,7 +199,7 @@ void_caster_primitive::~void_caster_primitive(){ } template -class BOOST_SYMBOL_VISIBLE void_caster_virtual_base : +class BOOST_SERIALIZATION_SYMBOL_VISIBLE void_caster_virtual_base : public void_caster { virtual bool has_virtual_base() const { @@ -244,7 +244,7 @@ void_caster_virtual_base::~void_caster_virtual_base(){ } template -struct BOOST_SYMBOL_VISIBLE void_caster_base : +struct BOOST_SERIALIZATION_SYMBOL_VISIBLE void_caster_base : public void_caster { typedef @@ -281,7 +281,7 @@ inline const void_cast_detail::void_caster & void_cast_register( } template -class BOOST_SYMBOL_VISIBLE void_caster : +class BOOST_SERIALIZATION_SYMBOL_VISIBLE void_caster : public void_cast_detail::void_caster_base::type { }; diff --git a/src/basic_archive.cpp b/src/basic_archive.cpp index 1a7b57d1..f7d1f6a3 100644 --- a/src/basic_archive.cpp +++ b/src/basic_archive.cpp @@ -41,7 +41,7 @@ namespace archive { // constants used in archive signature //This should never ever change. note that is not an std::string // string. -BOOST_SYMBOL_VISIBLE const char * +BOOST_ARCHIVE_SYMBOL_VISIBLE const char * BOOST_ARCHIVE_SIGNATURE(){ return "serialization::archive"; } @@ -75,7 +75,7 @@ BOOST_ARCHIVE_SIGNATURE(){ // 12- improved serialization of collections // 13- simplified visibility, removed Borland, removed pfto -BOOST_SYMBOL_VISIBLE library_version_type +BOOST_ARCHIVE_SYMBOL_VISIBLE library_version_type BOOST_ARCHIVE_VERSION(){ return library_version_type(13); } diff --git a/src/basic_iarchive.cpp b/src/basic_iarchive.cpp index 197cf676..21349ed9 100644 --- a/src/basic_iarchive.cpp +++ b/src/basic_iarchive.cpp @@ -561,7 +561,6 @@ basic_iarchive::load_pointer( const basic_pointer_iserializer * (*finder)( const boost::serialization::extended_type_info & type_ ) - ){ return pimpl->load_pointer(*this, t, bpis_ptr, finder); } diff --git a/src/basic_xml_archive.cpp b/src/basic_xml_archive.cpp index 3d846633..ff6a45bf 100644 --- a/src/basic_xml_archive.cpp +++ b/src/basic_xml_archive.cpp @@ -14,35 +14,35 @@ namespace boost { namespace archive { -BOOST_SYMBOL_VISIBLE const char * +BOOST_ARCHIVE_SYMBOL_VISIBLE const char * BOOST_ARCHIVE_XML_OBJECT_ID(){ return "object_id"; } -BOOST_SYMBOL_VISIBLE const char * +BOOST_ARCHIVE_SYMBOL_VISIBLE const char * BOOST_ARCHIVE_XML_OBJECT_REFERENCE(){ return "object_id_reference"; } -BOOST_SYMBOL_VISIBLE const char * +BOOST_ARCHIVE_SYMBOL_VISIBLE const char * BOOST_ARCHIVE_XML_CLASS_ID(){ return "class_id"; } -BOOST_SYMBOL_VISIBLE const char * +BOOST_ARCHIVE_SYMBOL_VISIBLE const char * BOOST_ARCHIVE_XML_CLASS_ID_REFERENCE(){ return "class_id_reference"; } -BOOST_SYMBOL_VISIBLE const char * +BOOST_ARCHIVE_SYMBOL_VISIBLE const char * BOOST_ARCHIVE_XML_CLASS_NAME(){ return "class_name"; } -BOOST_SYMBOL_VISIBLE const char * +BOOST_ARCHIVE_SYMBOL_VISIBLE const char * BOOST_ARCHIVE_XML_TRACKING(){ return "tracking_level"; } -BOOST_SYMBOL_VISIBLE const char * +BOOST_ARCHIVE_SYMBOL_VISIBLE const char * BOOST_ARCHIVE_XML_VERSION(){ return "version"; } -BOOST_SYMBOL_VISIBLE const char * +BOOST_ARCHIVE_SYMBOL_VISIBLE const char * BOOST_ARCHIVE_XML_SIGNATURE(){ return "signature"; } diff --git a/src/void_cast.cpp b/src/void_cast.cpp index 8ea5595e..204bad20 100644 --- a/src/void_cast.cpp +++ b/src/void_cast.cpp @@ -307,7 +307,7 @@ void_caster::recursive_unregister() const { } // namespace void_cast_detail -BOOST_SYMBOL_VISIBLE void const * +BOOST_SERIALIZATION_SYMBOL_VISIBLE void const * void_upcast( extended_type_info const & derived, extended_type_info const & base, @@ -341,7 +341,7 @@ void_upcast( return NULL; } -BOOST_SYMBOL_VISIBLE void const * +BOOST_SERIALIZATION_SYMBOL_VISIBLE void const * void_downcast( extended_type_info const & derived, extended_type_info const & base,