Boost logo

Boost :

From: Nicola Musatti (Nicola.Musatti_at_[hidden])
Date: 2006-05-24 17:45:01


Robert Ramey wrote:
> There are a couple of places which might be good to look at here.
>
> a) iserializer.hpp line # 190
> b) iserializer.hpp line # 326
>
> These two areas have borland specific code related to ensure
> that pointer de-serialization is instantiated. Perhaps borland
> has been improved so that it works more like other compilers
> in this regard. You might try tweaking these areas - using
> workaround borland version ... etc so that the more modern
> version uses the standard way. Let me know how this
> works.

Thanks for your suggestion, it did prove helpful! I enclose a couple of
patches which cause some 30 tests to pass which previously failed. Let
me know what you think and if you want me to apply them.

Cheers,
Nicola Musatti


******Index: basic_text_oprimitive.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/archive/basic_text_oprimitive.hpp,v
retrieving revision 1.12
diff -d -u -r1.12 basic_text_oprimitive.hpp
--- basic_text_oprimitive.hpp 4 Feb 2006 20:35:35 -0000 1.12
+++ basic_text_oprimitive.hpp 24 May 2006 20:53:36 -0000
@@ -58,6 +58,10 @@
 
 class save_access;
 
+#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) && __BORLANDC__ >= 0x580
+class version_type;
+#endif
+
 /////////////////////////////////////////////////////////////////////////
 // class basic_text_oprimitive - output of prmitives to stream
 template<class OStream>
@@ -84,6 +88,14 @@
         os << t;
     }
 
+ #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) && __BORLANDC__ >= 0x580
+ void save(const version_type t){
+ if(os.fail())
+ boost::throw_exception(archive_exception(archive_exception::stream_error));
+ os << t.t;
+ }
+ #endif
+
     /////////////////////////////////////////////////////////
     // fundamental types that need special treatment
     void save(const bool t){


******Index: iserializer.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/archive/detail/iserializer.hpp,v
retrieving revision 1.30
diff -d -u -r1.30 iserializer.hpp
--- iserializer.hpp 12 Feb 2006 05:45:16 -0000 1.30
+++ iserializer.hpp 24 May 2006 21:42:57 -0000
@@ -187,7 +187,7 @@
 public:
     // at least one compiler (CW) seems to require that serialize_adl
     // be explicitly instantiated. Still under investigation.
- #if !defined(__BORLANDC__)
+ #if ! BOOST_WORKAROUND(__BORLANDC__, < 0x582)
     void (* const m)(Archive &, T &, const unsigned);
     boost::serialization::extended_type_info * (* e)();
     #endif


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk