From a76a511c95d0ce2ec3fd78e024a381563540e9d1 Mon Sep 17 00:00:00 2001 From: Robert Ramey Date: Sun, 25 Oct 2015 21:02:44 -0700 Subject: [PATCH] adjustments for clang visibility --- build/Jamfile.v2 | 13 +++++++------ .../archive/impl/basic_binary_iprimitive.ipp | 1 + .../archive/impl/basic_binary_oprimitive.ipp | 1 + include/boost/serialization/singleton.hpp | 19 +++++-------------- src/singleton.cpp | 11 ++++++++++- 5 files changed, 24 insertions(+), 21 deletions(-) diff --git a/build/Jamfile.v2 b/build/Jamfile.v2 index 85288fc0..f26353a0 100644 --- a/build/Jamfile.v2 +++ b/build/Jamfile.v2 @@ -82,6 +82,7 @@ SOURCES = xml_archive_exception utf8_codecvt_facet codecvt_null + singleton ; WSOURCES = @@ -99,9 +100,9 @@ lib boost_serialization : msvc:/Gy msvc:_SCL_SECURE_NO_WARNINGS - # clang:"-fvisibility=hidden -fvisibility-inlines-hidden" - # gcc:"-fvisibility=hidden -fvisibility-inlines-hidden" - # darwin:"-fvisibility=hidden -fvisibility-inlines-hidden" + clang:"-fvisibility=hidden -fvisibility-inlines-hidden" + gcc:"-fvisibility=hidden -fvisibility-inlines-hidden" + darwin:"-fvisibility=hidden -fvisibility-inlines-hidden" gcc:"-ftemplate-depth-255" clang:"-ftemplate-depth-255" darwin:"-ftemplate-depth-255" @@ -113,9 +114,9 @@ lib boost_wserialization : msvc:/Gy msvc:_SCL_SECURE_NO_WARNINGS - # clang:"-fvisibility=hidden -fvisibility-inlines-hidden" - # gcc:"-fvisibility=hidden -fvisibility-inlines-hidden" - # darwin:"-fvisibility=hidden -fvisibility-inlines-hidden" + clang:"-fvisibility=hidden -fvisibility-inlines-hidden" + gcc:"-fvisibility=hidden -fvisibility-inlines-hidden" + darwin:"-fvisibility=hidden -fvisibility-inlines-hidden" gcc:"-ftemplate-depth-255" clang:"-ftemplate-depth-255" darwin:"-ftemplate-depth-255" diff --git a/include/boost/archive/impl/basic_binary_iprimitive.ipp b/include/boost/archive/impl/basic_binary_iprimitive.ipp index 35708881..2cd10493 100644 --- a/include/boost/archive/impl/basic_binary_iprimitive.ipp +++ b/include/boost/archive/impl/basic_binary_iprimitive.ipp @@ -152,6 +152,7 @@ basic_binary_iprimitive::basic_binary_iprimitive( archive_locale(sb.getloc(), & codecvt_null_facet) { if(! no_codecvt){ + m_sb.pubsync(); m_sb.pubimbue(archive_locale); } } diff --git a/include/boost/archive/impl/basic_binary_oprimitive.ipp b/include/boost/archive/impl/basic_binary_oprimitive.ipp index 964bf74a..db67d708 100644 --- a/include/boost/archive/impl/basic_binary_oprimitive.ipp +++ b/include/boost/archive/impl/basic_binary_oprimitive.ipp @@ -105,6 +105,7 @@ basic_binary_oprimitive::basic_binary_oprimitive( archive_locale(sb.getloc(), & codecvt_null_facet) { if(! no_codecvt){ + m_sb.pubsync(); m_sb.pubimbue(archive_locale); } } diff --git a/include/boost/serialization/singleton.hpp b/include/boost/serialization/singleton.hpp index 9c55217b..fcb79c36 100644 --- a/include/boost/serialization/singleton.hpp +++ b/include/boost/serialization/singleton.hpp @@ -81,24 +81,15 @@ namespace serialization { // attempt to retieve a mutable instances while locked will // generate a assertion if compiled for debug. -class singleton_module : +class BOOST_SYMBOL_VISIBLE singleton_module : public boost::noncopyable { private: - BOOST_SERIALIZATION_DECL static bool & get_lock(); + static bool & get_lock(); public: -// static const void * get_module_handle(){ -// return static_cast(get_module_handle); -// } - static void lock(){ - get_lock() = true; - } - static void unlock(){ - get_lock() = false; - } - static bool is_locked() { - return get_lock(); - } + BOOST_SERIALIZATION_DECL static void lock(); + BOOST_SERIALIZATION_DECL static void unlock(); + BOOST_SERIALIZATION_DECL static bool is_locked(); }; #include // pops abi_suffix.hpp pragmas diff --git a/src/singleton.cpp b/src/singleton.cpp index 6d4d3ce9..019008dc 100644 --- a/src/singleton.cpp +++ b/src/singleton.cpp @@ -13,11 +13,20 @@ namespace boost { namespace serialization { -BOOST_SERIALIZATION_DECL bool & singleton_module::get_lock(){ static bool lock = false; return lock; } +BOOST_SERIALIZATION_DECL void singleton_module::lock(){ + get_lock() = true; +} +BOOST_SERIALIZATION_DECL void singleton_module::unlock(){ + get_lock() = false; +} +BOOST_SERIALIZATION_DECL bool singleton_module::is_locked() { + return get_lock(); +} + } // namespace serialization } // namespace boost