From 673135a41e897c67580d8f280ea2ca19cd17d91d Mon Sep 17 00:00:00 2001 From: Robert Ramey Date: Thu, 6 Mar 2014 08:24:28 -0800 Subject: [PATCH] changes to support msvc 8.0 reversion problems created by s kelly project --- .../boost/archive/basic_binary_iarchive.hpp | 16 ++++++++-------- .../boost/archive/basic_binary_iprimitive.hpp | 6 +----- .../boost/archive/basic_binary_oarchive.hpp | 16 ++++++++++------ .../boost/archive/basic_binary_oprimitive.hpp | 7 +------ include/boost/archive/basic_text_iarchive.hpp | 12 +++++++++++- .../boost/archive/basic_text_iprimitive.hpp | 7 +------ include/boost/archive/basic_text_oarchive.hpp | 13 ++++++++++--- .../boost/archive/basic_text_oprimitive.hpp | 4 ---- include/boost/archive/basic_xml_iarchive.hpp | 12 +++++++++++- include/boost/archive/basic_xml_oarchive.hpp | 10 ++++++++++ .../boost/archive/binary_iarchive_impl.hpp | 14 +++++++++++--- .../boost/archive/binary_oarchive_impl.hpp | 14 +++++++++++--- include/boost/archive/text_iarchive.hpp | 12 +++++++++--- include/boost/archive/text_oarchive.hpp | 14 +++++++++++--- include/boost/archive/text_wiarchive.hpp | 12 +++++++++--- include/boost/archive/text_woarchive.hpp | 14 +++++++++++--- include/boost/archive/xml_iarchive.hpp | 14 +++++++++++--- include/boost/archive/xml_oarchive.hpp | 14 +++++++++++--- include/boost/archive/xml_wiarchive.hpp | 14 +++++++++++--- include/boost/archive/xml_woarchive.hpp | 19 ++++++++++++++++--- 20 files changed, 174 insertions(+), 70 deletions(-) diff --git a/include/boost/archive/basic_binary_iarchive.hpp b/include/boost/archive/basic_binary_iarchive.hpp index 279c5b68..df93d2bb 100644 --- a/include/boost/archive/basic_binary_iarchive.hpp +++ b/include/boost/archive/basic_binary_iarchive.hpp @@ -54,17 +54,17 @@ template class basic_binary_iarchive : public detail::common_iarchive { -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) +#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else protected: -#endif -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) - // for some inexplicable reason insertion of "class" generates compile erro - // on msvc 8.0 - friend detail::interface_iarchive; -#else - friend class detail::interface_iarchive; + #if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 8.0 + friend detail::interface_iarchive; + #else + friend class detail::interface_iarchive; + #endif #endif // intermediate level to support override of operators // fot templates in the absence of partial function diff --git a/include/boost/archive/basic_binary_iprimitive.hpp b/include/boost/archive/basic_binary_iprimitive.hpp index 3653eead..ea6ad40e 100644 --- a/include/boost/archive/basic_binary_iprimitive.hpp +++ b/include/boost/archive/basic_binary_iprimitive.hpp @@ -65,12 +65,8 @@ namespace archive { template class basic_binary_iprimitive { -#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS - friend class load_access; protected: -#else -public: -#endif + friend class load_access; std::basic_streambuf & m_sb; // return a pointer to the most derived class Archive * This(){ diff --git a/include/boost/archive/basic_binary_oarchive.hpp b/include/boost/archive/basic_binary_oarchive.hpp index 34a0a9b5..468d1c5c 100644 --- a/include/boost/archive/basic_binary_oarchive.hpp +++ b/include/boost/archive/basic_binary_oarchive.hpp @@ -62,13 +62,17 @@ template class basic_binary_oarchive : public archive::detail::common_oarchive { -protected: -#if BOOST_WORKAROUND(BOOST_MSVC, < 1600) - // for some inexplicable reason insertion of "class" generates compile error - // on msvc versions befor 9.0 - friend detail::interface_oarchive; +#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS +public: #else - friend class detail::interface_oarchive; +protected: + #if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 8.0 + friend detail::interface_oarchive; + #else + friend class detail::interface_oarchive; + #endif #endif // any datatype not specifed below will be handled by base class typedef detail::common_oarchive detail_common_oarchive; diff --git a/include/boost/archive/basic_binary_oprimitive.hpp b/include/boost/archive/basic_binary_oprimitive.hpp index 5e392a16..a43b9e06 100644 --- a/include/boost/archive/basic_binary_oprimitive.hpp +++ b/include/boost/archive/basic_binary_oprimitive.hpp @@ -58,14 +58,9 @@ namespace archive { // class basic_binary_oprimitive - binary output of prmitives template -class basic_binary_oprimitive -{ -#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS +class basic_binary_oprimitive { friend class save_access; protected: -#else -public: -#endif std::basic_streambuf & m_sb; // return a pointer to the most derived class Archive * This(){ diff --git a/include/boost/archive/basic_text_iarchive.hpp b/include/boost/archive/basic_text_iarchive.hpp index 73135df4..6ba54d2e 100644 --- a/include/boost/archive/basic_text_iarchive.hpp +++ b/include/boost/archive/basic_text_iarchive.hpp @@ -50,8 +50,18 @@ template class basic_text_iarchive : public detail::common_iarchive { +#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS +public: +#else protected: - friend class detail::interface_iarchive; + #if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 8.0 + friend detail::interface_iarchive; + #else + friend class detail::interface_iarchive; + #endif +#endif // intermediate level to support override of operators // fot templates in the absence of partial function // template ordering diff --git a/include/boost/archive/basic_text_iprimitive.hpp b/include/boost/archive/basic_text_iprimitive.hpp index bd0e2301..e91f1267 100644 --- a/include/boost/archive/basic_text_iprimitive.hpp +++ b/include/boost/archive/basic_text_iprimitive.hpp @@ -64,13 +64,8 @@ namespace archive { #endif template -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; io::ios_precision_saver precision_saver; diff --git a/include/boost/archive/basic_text_oarchive.hpp b/include/boost/archive/basic_text_oarchive.hpp index ca20e020..e54c7edf 100644 --- a/include/boost/archive/basic_text_oarchive.hpp +++ b/include/boost/archive/basic_text_oarchive.hpp @@ -52,12 +52,19 @@ template class basic_text_oarchive : public detail::common_oarchive { -protected: -#if BOOST_WORKAROUND(__BORLANDC__,BOOST_TESTED_AT(0x560)) +#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_oarchive; +protected: + #if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 8.0 + friend detail::interface_oarchive; + #else + friend class detail::interface_oarchive; + #endif #endif + enum { none, eol, diff --git a/include/boost/archive/basic_text_oprimitive.hpp b/include/boost/archive/basic_text_oprimitive.hpp index 0b26be14..03757818 100644 --- a/include/boost/archive/basic_text_oprimitive.hpp +++ b/include/boost/archive/basic_text_oprimitive.hpp @@ -68,11 +68,7 @@ class save_access; template class basic_text_oprimitive { -#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS protected: -#else -public: -#endif OStream &os; io::ios_flags_saver flags_saver; io::ios_precision_saver precision_saver; diff --git a/include/boost/archive/basic_xml_iarchive.hpp b/include/boost/archive/basic_xml_iarchive.hpp index e253a1c9..cfd9c4ba 100644 --- a/include/boost/archive/basic_xml_iarchive.hpp +++ b/include/boost/archive/basic_xml_iarchive.hpp @@ -47,8 +47,18 @@ template class basic_xml_iarchive : public detail::common_iarchive { +#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS +public: +#else protected: - friend class detail::interface_iarchive; + #if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 8.0 + friend detail::interface_iarchive; + #else + friend class detail::interface_iarchive; + #endif +#endif unsigned int depth; BOOST_ARCHIVE_OR_WARCHIVE_DECL(void) load_start(const char *name); diff --git a/include/boost/archive/basic_xml_oarchive.hpp b/include/boost/archive/basic_xml_oarchive.hpp index 8573e5f5..58d6495b 100644 --- a/include/boost/archive/basic_xml_oarchive.hpp +++ b/include/boost/archive/basic_xml_oarchive.hpp @@ -46,8 +46,18 @@ template class basic_xml_oarchive : public detail::common_oarchive { +#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) +public: +#else protected: +#endif +#if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 8.0 + friend detail::interface_oarchive; +#else friend class detail::interface_oarchive; +#endif friend class save_access; // special stuff for xml output unsigned int depth; diff --git a/include/boost/archive/binary_iarchive_impl.hpp b/include/boost/archive/binary_iarchive_impl.hpp index 66b0f315..258a8101 100644 --- a/include/boost/archive/binary_iarchive_impl.hpp +++ b/include/boost/archive/binary_iarchive_impl.hpp @@ -41,10 +41,18 @@ class binary_iarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_iarchive; - friend class basic_binary_iarchive; - friend class load_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 8.0 + friend detail::interface_iarchive; + friend basic_binary_iarchive; + friend load_access; + #else + friend class detail::interface_iarchive; + friend class basic_binary_iarchive; + friend class load_access; + #endif #endif // note: the following should not needed - but one compiler (vc 7.1) // fails to compile one test (test_shared_ptr) without it !!! diff --git a/include/boost/archive/binary_oarchive_impl.hpp b/include/boost/archive/binary_oarchive_impl.hpp index 2dfb402c..2e0fc818 100644 --- a/include/boost/archive/binary_oarchive_impl.hpp +++ b/include/boost/archive/binary_oarchive_impl.hpp @@ -42,10 +42,18 @@ class binary_oarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_oarchive; - friend class basic_binary_oarchive; - friend class save_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 8.0 + friend detail::interface_oarchive; + friend basic_binary_oarchive; + friend save_access; + #else + friend class detail::interface_oarchive; + friend class basic_binary_oarchive; + friend class save_access; + #endif #endif // note: the following should not needed - but one compiler (vc 7.1) // fails to compile one test (test_shared_ptr) without it !!! diff --git a/include/boost/archive/text_iarchive.hpp b/include/boost/archive/text_iarchive.hpp index 03c611b3..507ff36f 100644 --- a/include/boost/archive/text_iarchive.hpp +++ b/include/boost/archive/text_iarchive.hpp @@ -47,10 +47,16 @@ class text_iarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_iarchive; - friend class basic_text_iarchive; - friend class load_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 8.0 + friend detail::interface_iarchive; + friend load_access; + #else + friend class detail::interface_iarchive; + friend class load_access; + #endif #endif template void load(T & t){ diff --git a/include/boost/archive/text_oarchive.hpp b/include/boost/archive/text_oarchive.hpp index f07448b7..9496cd27 100644 --- a/include/boost/archive/text_oarchive.hpp +++ b/include/boost/archive/text_oarchive.hpp @@ -54,10 +54,18 @@ class text_oarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_oarchive; - friend class basic_text_oarchive; - friend class save_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 8.0 + friend detail::interface_oarchive; + friend basic_text_oarchive; + friend save_access; + #else + friend class detail::interface_oarchive; + friend class basic_text_oarchive; + friend class save_access; + #endif #endif template void save(const T & t){ diff --git a/include/boost/archive/text_wiarchive.hpp b/include/boost/archive/text_wiarchive.hpp index 0435fba9..42fc56f2 100644 --- a/include/boost/archive/text_wiarchive.hpp +++ b/include/boost/archive/text_wiarchive.hpp @@ -51,10 +51,16 @@ class text_wiarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_iarchive; - friend class basic_text_iarchive; - friend class load_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 8.0 + friend detail::interface_iarchive; + friend load_access; + #else + friend class detail::interface_iarchive; + friend class load_access; + #endif #endif template void load(T & t){ diff --git a/include/boost/archive/text_woarchive.hpp b/include/boost/archive/text_woarchive.hpp index 3c8338a7..31cdceb8 100644 --- a/include/boost/archive/text_woarchive.hpp +++ b/include/boost/archive/text_woarchive.hpp @@ -59,10 +59,18 @@ class text_woarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_oarchive; - friend class basic_text_oarchive; - friend class save_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 8.0 + friend detail::interface_oarchive; + friend basic_text_oarchive; + friend save_access; + #else + friend class detail::interface_oarchive; + friend class basic_text_oarchive; + friend class save_access; + #endif #endif template void save(const T & t){ diff --git a/include/boost/archive/xml_iarchive.hpp b/include/boost/archive/xml_iarchive.hpp index 0a63b530..2234c864 100644 --- a/include/boost/archive/xml_iarchive.hpp +++ b/include/boost/archive/xml_iarchive.hpp @@ -51,10 +51,18 @@ class xml_iarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_iarchive; - friend class basic_xml_iarchive; - friend class load_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 8.0 + friend detail::interface_iarchive; + friend basic_xml_iarchive; + friend load_access; + #else + friend class detail::interface_iarchive; + friend class basic_xml_iarchive; + friend class load_access; + #endif #endif // instances of micro xml parser to parse start preambles // scoped_ptr doesn't play nice with borland - so use a naked pointer diff --git a/include/boost/archive/xml_oarchive.hpp b/include/boost/archive/xml_oarchive.hpp index 02f5b656..db9c2e07 100644 --- a/include/boost/archive/xml_oarchive.hpp +++ b/include/boost/archive/xml_oarchive.hpp @@ -54,10 +54,18 @@ class xml_oarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_oarchive; - friend class basic_xml_oarchive; - friend class save_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 8.0 + friend detail::interface_oarchive; + friend basic_xml_oarchive; + friend save_access; + #else + friend class detail::interface_oarchive; + friend class basic_xml_oarchive; + friend class save_access; + #endif #endif //void end_preamble(){ // basic_xml_oarchive::end_preamble(); diff --git a/include/boost/archive/xml_wiarchive.hpp b/include/boost/archive/xml_wiarchive.hpp index 51d54b31..8522bb67 100644 --- a/include/boost/archive/xml_wiarchive.hpp +++ b/include/boost/archive/xml_wiarchive.hpp @@ -56,10 +56,18 @@ class xml_wiarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_iarchive; - friend class basic_xml_iarchive; - friend class load_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 8.0 + friend detail::interface_iarchive; + friend basic_xml_iarchive; + friend load_access; + #else + friend class detail::interface_iarchive; + friend class basic_xml_iarchive; + friend class load_access; + #endif #endif // instances of micro xml parser to parse start preambles // scoped_ptr doesn't play nice with borland - so use a naked pointer diff --git a/include/boost/archive/xml_woarchive.hpp b/include/boost/archive/xml_woarchive.hpp index c3f72f7d..5b0a11f4 100644 --- a/include/boost/archive/xml_woarchive.hpp +++ b/include/boost/archive/xml_woarchive.hpp @@ -46,6 +46,10 @@ namespace std{ namespace boost { namespace archive { +namespace detail { + template class interface_oarchive; +} // namespace detail + template class xml_woarchive_impl : public basic_text_oprimitive, @@ -54,11 +58,20 @@ class xml_woarchive_impl : #ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS public: #else - friend class detail::interface_oarchive; - friend class basic_xml_oarchive; - friend class save_access; protected: + #if BOOST_WORKAROUND(BOOST_MSVC, <= 1500) + // for some inexplicable reason insertion of "class" generates compile erro + // on msvc 8.0 + friend detail::interface_oarchive; + friend basic_xml_oarchive; + friend save_access; + #else + friend class detail::interface_oarchive; + friend class basic_xml_oarchive; + friend class save_access; + #endif #endif + //void end_preamble(){ // basic_xml_oarchive::end_preamble(); //}