changes to support msvc 8.0

reversion problems created by s kelly project
This commit is contained in:
Robert Ramey
2014-03-06 08:24:28 -08:00
parent 168671c1c3
commit 673135a41e
20 changed files with 174 additions and 70 deletions

View File

@@ -54,17 +54,17 @@ template<class Archive>
class basic_binary_iarchive :
public detail::common_iarchive<Archive>
{
#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<Archive>;
#else
friend class detail::interface_iarchive<Archive>;
#if BOOST_WORKAROUND(BOOST_MSVC, <= 1500)
// for some inexplicable reason insertion of "class" generates compile erro
// on msvc 8.0
friend detail::interface_iarchive<Archive>;
#else
friend class detail::interface_iarchive<Archive>;
#endif
#endif
// intermediate level to support override of operators
// fot templates in the absence of partial function

View File

@@ -65,12 +65,8 @@ namespace archive {
template<class Archive, class Elem, class Tr>
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<Elem, Tr> & m_sb;
// return a pointer to the most derived class
Archive * This(){

View File

@@ -62,13 +62,17 @@ template<class Archive>
class basic_binary_oarchive :
public archive::detail::common_oarchive<Archive>
{
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<Archive>;
#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
#else
friend class detail::interface_oarchive<Archive>;
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<Archive>;
#else
friend class detail::interface_oarchive<Archive>;
#endif
#endif
// any datatype not specifed below will be handled by base class
typedef detail::common_oarchive<Archive> detail_common_oarchive;

View File

@@ -58,14 +58,9 @@ namespace archive {
// class basic_binary_oprimitive - binary output of prmitives
template<class Archive, class Elem, class Tr>
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<Elem, Tr> & m_sb;
// return a pointer to the most derived class
Archive * This(){

View File

@@ -50,8 +50,18 @@ template<class Archive>
class basic_text_iarchive :
public detail::common_iarchive<Archive>
{
#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
#else
protected:
friend class detail::interface_iarchive<Archive>;
#if BOOST_WORKAROUND(BOOST_MSVC, <= 1500)
// for some inexplicable reason insertion of "class" generates compile erro
// on msvc 8.0
friend detail::interface_iarchive<Archive>;
#else
friend class detail::interface_iarchive<Archive>;
#endif
#endif
// intermediate level to support override of operators
// fot templates in the absence of partial function
// template ordering

View File

@@ -64,13 +64,8 @@ namespace archive {
#endif
template<class IStream>
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;

View File

@@ -52,12 +52,19 @@ template<class Archive>
class basic_text_oarchive :
public detail::common_oarchive<Archive>
{
protected:
#if BOOST_WORKAROUND(__BORLANDC__,BOOST_TESTED_AT(0x560))
#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
#else
friend class detail::interface_oarchive<Archive>;
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<Archive>;
#else
friend class detail::interface_oarchive<Archive>;
#endif
#endif
enum {
none,
eol,

View File

@@ -68,11 +68,7 @@ class save_access;
template<class OStream>
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;

View File

@@ -47,8 +47,18 @@ template<class Archive>
class basic_xml_iarchive :
public detail::common_iarchive<Archive>
{
#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
#else
protected:
friend class detail::interface_iarchive<Archive>;
#if BOOST_WORKAROUND(BOOST_MSVC, <= 1500)
// for some inexplicable reason insertion of "class" generates compile erro
// on msvc 8.0
friend detail::interface_iarchive<Archive>;
#else
friend class detail::interface_iarchive<Archive>;
#endif
#endif
unsigned int depth;
BOOST_ARCHIVE_OR_WARCHIVE_DECL(void)
load_start(const char *name);

View File

@@ -46,8 +46,18 @@ template<class Archive>
class basic_xml_oarchive :
public detail::common_oarchive<Archive>
{
#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<Archive>;
#else
friend class detail::interface_oarchive<Archive>;
#endif
friend class save_access;
// special stuff for xml output
unsigned int depth;

View File

@@ -41,10 +41,18 @@ class binary_iarchive_impl :
#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
#else
friend class detail::interface_iarchive<Archive>;
friend class basic_binary_iarchive<Archive>;
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<Archive>;
friend basic_binary_iarchive<Archive>;
friend load_access;
#else
friend class detail::interface_iarchive<Archive>;
friend class basic_binary_iarchive<Archive>;
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 !!!

View File

@@ -42,10 +42,18 @@ class binary_oarchive_impl :
#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
#else
friend class detail::interface_oarchive<Archive>;
friend class basic_binary_oarchive<Archive>;
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<Archive>;
friend basic_binary_oarchive<Archive>;
friend save_access;
#else
friend class detail::interface_oarchive<Archive>;
friend class basic_binary_oarchive<Archive>;
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 !!!

View File

@@ -47,10 +47,16 @@ class text_iarchive_impl :
#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
#else
friend class detail::interface_iarchive<Archive>;
friend class basic_text_iarchive<Archive>;
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<Archive>;
friend load_access;
#else
friend class detail::interface_iarchive<Archive>;
friend class load_access;
#endif
#endif
template<class T>
void load(T & t){

View File

@@ -54,10 +54,18 @@ class text_oarchive_impl :
#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
#else
friend class detail::interface_oarchive<Archive>;
friend class basic_text_oarchive<Archive>;
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<Archive>;
friend basic_text_oarchive<Archive>;
friend save_access;
#else
friend class detail::interface_oarchive<Archive>;
friend class basic_text_oarchive<Archive>;
friend class save_access;
#endif
#endif
template<class T>
void save(const T & t){

View File

@@ -51,10 +51,16 @@ class text_wiarchive_impl :
#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
#else
friend class detail::interface_iarchive<Archive>;
friend class basic_text_iarchive<Archive>;
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<Archive>;
friend load_access;
#else
friend class detail::interface_iarchive<Archive>;
friend class load_access;
#endif
#endif
template<class T>
void load(T & t){

View File

@@ -59,10 +59,18 @@ class text_woarchive_impl :
#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
#else
friend class detail::interface_oarchive<Archive>;
friend class basic_text_oarchive<Archive>;
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<Archive>;
friend basic_text_oarchive<Archive>;
friend save_access;
#else
friend class detail::interface_oarchive<Archive>;
friend class basic_text_oarchive<Archive>;
friend class save_access;
#endif
#endif
template<class T>
void save(const T & t){

View File

@@ -51,10 +51,18 @@ class xml_iarchive_impl :
#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
#else
friend class detail::interface_iarchive<Archive>;
friend class basic_xml_iarchive<Archive>;
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<Archive>;
friend basic_xml_iarchive<Archive>;
friend load_access;
#else
friend class detail::interface_iarchive<Archive>;
friend class basic_xml_iarchive<Archive>;
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

View File

@@ -54,10 +54,18 @@ class xml_oarchive_impl :
#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
#else
friend class detail::interface_oarchive<Archive>;
friend class basic_xml_oarchive<Archive>;
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<Archive>;
friend basic_xml_oarchive<Archive>;
friend save_access;
#else
friend class detail::interface_oarchive<Archive>;
friend class basic_xml_oarchive<Archive>;
friend class save_access;
#endif
#endif
//void end_preamble(){
// basic_xml_oarchive<Archive>::end_preamble();

View File

@@ -56,10 +56,18 @@ class xml_wiarchive_impl :
#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
#else
friend class detail::interface_iarchive<Archive>;
friend class basic_xml_iarchive<Archive>;
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<Archive>;
friend basic_xml_iarchive<Archive>;
friend load_access;
#else
friend class detail::interface_iarchive<Archive>;
friend class basic_xml_iarchive<Archive>;
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

View File

@@ -46,6 +46,10 @@ namespace std{
namespace boost {
namespace archive {
namespace detail {
template<class Archive> class interface_oarchive;
} // namespace detail
template<class Archive>
class xml_woarchive_impl :
public basic_text_oprimitive<std::wostream>,
@@ -54,11 +58,20 @@ class xml_woarchive_impl :
#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
public:
#else
friend class detail::interface_oarchive<Archive>;
friend class basic_xml_oarchive<Archive>;
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<Archive>;
friend basic_xml_oarchive<Archive>;
friend save_access;
#else
friend class detail::interface_oarchive<Archive>;
friend class basic_xml_oarchive<Archive>;
friend class save_access;
#endif
#endif
//void end_preamble(){
// basic_xml_oarchive<Archive>::end_preamble();
//}