Boost logo

Boost-Commit :

From: ramey_at_[hidden]
Date: 2007-11-27 01:26:59


Author: ramey
Date: 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
New Revision: 41412
URL: http://svn.boost.org/trac/boost/changeset/41412

Log:
failing only two tests in gcc! Unfortunately, fixing the error requires extended type info to be a little bit more elaborate. So I'm doing a check in now
Text files modified:
   branches/serialization_next_release/boost/libs/serialization/build/Jamfile.v2 | 1
   branches/serialization_next_release/boost/libs/serialization/doc/contents.html | 4 ++
   branches/serialization_next_release/boost/libs/serialization/doc/extended_type_info.html | 39 +++++++++++++++++++++++++++++++
   branches/serialization_next_release/boost/libs/serialization/doc/special.html | 45 +++++++++++++++++++++++++++++++++---
   branches/serialization_next_release/boost/libs/serialization/src/basic_oarchive.cpp | 4 --
   branches/serialization_next_release/boost/libs/serialization/src/codecvt_null.cpp | 6 ++--
   branches/serialization_next_release/boost/libs/serialization/src/extended_type_info.cpp | 16 ++++++------
   branches/serialization_next_release/boost/libs/serialization/src/extended_type_info_typeid.cpp | 18 +++++++++----
   branches/serialization_next_release/boost/libs/serialization/src/void_cast.cpp | 2 +
   branches/serialization_next_release/boost/libs/serialization/test/A.cpp | 4 +-
   branches/serialization_next_release/boost/libs/serialization/test/A.ipp | 2
   branches/serialization_next_release/boost/libs/serialization/test/Jamfile.v2 | 49 +++++++++++++++------------------------
   branches/serialization_next_release/boost/libs/serialization/test/base.hpp | 3 -
   branches/serialization_next_release/boost/libs/serialization/test/derived2.hpp | 1
   branches/serialization_next_release/boost/libs/serialization/test/dll_base.cpp | 2
   branches/serialization_next_release/boost/libs/serialization/test/dll_derived2.cpp | 3 ++
   branches/serialization_next_release/boost/libs/serialization/test/test_contained_class.cpp | 1
   branches/serialization_next_release/boost/libs/serialization/test/test_derived_class.cpp | 1
   branches/serialization_next_release/boost/libs/serialization/test/test_derived_class_ptr.cpp | 1
   branches/serialization_next_release/boost/libs/serialization/test/test_multiple_ptrs.cpp | 1
   branches/serialization_next_release/boost/libs/serialization/test/test_no_rtti.cpp | 2
   branches/serialization_next_release/boost/libs/serialization/test/test_nvp.cpp | 1
   branches/serialization_next_release/boost/libs/serialization/test/test_recursion.cpp | 1
   branches/serialization_next_release/boost/libs/serialization/test/test_tools.hpp | 2
   24 files changed, 145 insertions(+), 64 deletions(-)

Modified: branches/serialization_next_release/boost/libs/serialization/build/Jamfile.v2
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/build/Jamfile.v2 (original)
+++ branches/serialization_next_release/boost/libs/serialization/build/Jamfile.v2 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -30,6 +30,7 @@
     binary_oarchive
     extended_type_info
     extended_type_info_typeid
+ extended_type_info_no_rtti
     polymorphic_iarchive
     polymorphic_oarchive
     stl_port

Modified: branches/serialization_next_release/boost/libs/serialization/doc/contents.html
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/doc/contents.html (original)
+++ branches/serialization_next_release/boost/libs/serialization/doc/contents.html 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -180,7 +180,6 @@
       <dt><img style="display:none" src="plus.gif" id="special"><a target="detail" href="special.html">Special Considerations</a>
       <dd><div id="special_detail"><dl class="page-index">
         <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#objecttracking">Object Tracking</a>
- <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#export">Exporting Class Serialization</a>
         <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#classinfo">Class Information</a>
         <dt><img style="display:none" src="plus.gif" id="portability"><a target="detail" href="special.html#portability">Archive Portability</a>
         <dd><div id="portability_detail"><dl class="page-index">
@@ -189,7 +188,9 @@
         </dl></div></dd>
         <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#binary_archives">Binary Archives</a>
         <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#xml_archives">XML Archives</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#export">Exporting Class Serialization</a>
         <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#dlls">DLLS - Serialization and Runtime Linking</a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#plugins">Plugins</a>
         <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#multi_threading">Multi-Threading</a>
         <dt><img style="display:none" src="dot.gif"><a target="detail" href="special.html#optimizations">Optimzations</a>
         <dt><img style="display:none" src="plus.gif" id="exceptions"><a target="detail" href="exceptions.html">Archive Exceptions</a>
@@ -273,6 +274,7 @@
         <dt><img style="display:none" src="dot.gif"><a target="detail" href="extended_type_info.html#models">Models</a>
       </dl></div></dd>
       <dt><img style="display:none" src="dot.gif"><a target="detail" href="void_cast.html"><code>void_cast</code></a>
+ <dt><img style="display:none" src="dot.gif"><a target="detail" href="factory.html"><code>BOOST_SERIALIZATION_FACTORY</code></a>
       <dt><img style="display:none" src="dot.gif"><a target="detail" href="codecvt.html"><code>utf8_codecvt_facet</code></a>
       <dt><img style="display:none" src="dot.gif"><a target="detail" href="strong_typedef.html"><code>BOOST_STRONG_TYPEDEF</code></a>
       <dt><img style="display:none" src="dot.gif"><a target="detail" href="state_saver.html"><code>state_saver</code></a>

Modified: branches/serialization_next_release/boost/libs/serialization/doc/extended_type_info.html
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/doc/extended_type_info.html (original)
+++ branches/serialization_next_release/boost/libs/serialization/doc/extended_type_info.html 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -118,6 +118,9 @@
     bool operator!=(const extended_type_info &rhs) const {
         return !(operator==(rhs));
     }
+ // for plugins
+ virtual void * construct(unsigned int count = 0, ...) const;
+ virtual void destroy(void const * const p) const;
     static const extended_type_info * find(const char *key);
 };
 
@@ -183,6 +186,39 @@
 </code>
 </a>
 objects. They a strict total ordering on all instances of this class.
+</dd>
+
+<dt><h4><pre><code>
+virtual void * construct(unsigned int count = 0, ...) const;
+</code></pre></h4></dt>
+<dd>
+Construct a new instance of the type to which this
+<a target="extended_type_info.hpp" href = "../../../boost/serialization/extended_type_info.hpp">
+<code style="white-space: normal">
+extended_type_info
+</code>
+</a>
+record corresponds. This function takes variable list of up to 4 arguments
+of any type. These arguments are passed to the type's constructor
+at runtime. In order to use the facility,
+one must declare a type sequence for the constructor arguments.
+Arguments for this function must match in number and type
+with those specified when the type was exported.
+This function permits one to create instances of
+any exported type given only the exported <strong>GUID</strong> assigned
+with BOOST_CLASS_EXPORT.
+If these types are defined in DLLS or shared libraries. When these modules
+are loaded at runtime, these constructor can be called until the module
+is unloaded. These modules are referred to as <b>plugin</b>.
+</code>
+</dd>
+
+<dt><h4><pre><code>
+virtual void destroy(void const * const p) const;
+</code></pre></h4></dt>
+<dd>
+Destroy an instance created by the above constructor.
+</dd>
 
 <dt><h4><pre><code>
 static const extended_type_info * find(const char *key);
@@ -241,7 +277,8 @@
 bool ETI::less_than(const extended_type_info &rhs) const;
 </pre></code></h4></dt>
 <dd>
-Compare this instance to another one.
+Compare this instance to another one using the same
+<code style="white-space: normal">extended_type_info</code> implementation.
 </dd>
 </dl>
 

Modified: branches/serialization_next_release/boost/libs/serialization/doc/special.html
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/doc/special.html (original)
+++ branches/serialization_next_release/boost/libs/serialization/doc/special.html 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -37,6 +37,7 @@
   <dt>XML Archives
   <dt>Exporting Class Serialization
   <dt>DLLS - Serialization and Runtime Linking
+ <dt>Plugins
   <dt>Multi-Threading
   <dt>Optimizations
   <dt>Archive Exceptions
@@ -361,9 +362,9 @@
 that only one such library can use <code style="white-space: normal">BOOST_CLASS_EXPORT</code>
 for any given type. All this will most likely make it inconvenient
 to include <code style="white-space: normal">BOOST_CLASS_EXPORT</code>
-as part of the header of the class to be serialized. In this case
-it would probably be best to include it in source module which
-implements the class.
+as part of the header of the class to be serialized. So, <b>the
+best way to use <code style="white-space: normal">BOOST_CLASS_EXPORT</code>
+is to include it in the same module which implements the class</b>.
 
 <p>
 Strictly speaking, export should not be necessary if all pointer serialization
@@ -424,6 +425,42 @@
 uses it starts up, but it could just as well be loaded and unloaded
 with an OS dependent API call.
 
+<h3><a name="plugins">Plugins</a></h3>
+In order to implement the library, various facilities for runtime
+manipulation of types are runtime were required. These
+are <a target="detail" href="extended_type_info.html"><code>extended_type_info</code></a>
+for associating classes with external identifying strings (<b>GUID</b>)
+and <a target="detail" href="void_cast.html"><code>void_cast</code></a>
+for casting between pointers of related types.
+
+To complete the functionality of
+<a target="detail" href="extended_type_info.html"><code>extended_type_info</code></a>
+the ability to construct and destroy corresponding types has been
+added. In order to use this functionality, one must specify
+how each type is created. This should be done at the time
+a class is exported. So, a more complete example of the code above would be:
+
+<pre><code>
+#include &lt;boost/archive/text_oarchive.hpp&gt;
+#include &lt;boost/archive/text_oarchive.hpp&gt;
+... // other archives
+
+#include "a.hpp" // header declaration for class a
+
+// this class has a default constructor
+BOOST_SERIALIZATION_FACTORY_0(a)
+// as well as one that takes one integer argument
+BOOST_SERIALIZATION_FACTORY_1(a, int)
+
+// specify the GUID for this class
+BOOST_CLASS_EXPORT(a)
+... // other class headers and exports
+</code></pre>
+
+With this in place, one can construct, serialize and destroy
+about which only is know the <b>GUID</b> and a base class.
+
+
 <h3><a name="multi_threading">Multi-Threading</a></h3>
 The fundamental purpose of serialization would conflict with multiple
 thread concurrently writing/reading from/to a single open archive instance.
@@ -439,7 +476,7 @@
 </a>
 described elsewhere in this documentation.
 <p>
-This singleton implemenation guarentees that all of this shared
+This singleton implementation guarentees that all of this shared
 information is initialized when the code module which contains
 them is loaded. The serialization library takes care to
 ensure that these data structures are not subsequently

Modified: branches/serialization_next_release/boost/libs/serialization/src/basic_oarchive.cpp
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/src/basic_oarchive.cpp (original)
+++ branches/serialization_next_release/boost/libs/serialization/src/basic_oarchive.cpp 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -27,6 +27,7 @@
 #include <boost/archive/detail/basic_pointer_oserializer.hpp>
 #include <boost/archive/detail/basic_oarchive.hpp>
 #include <boost/archive/archive_exception.hpp>
+#include <boost/serialization/extended_type_info.hpp>
 
 #ifdef BOOST_MSVC
 # pragma warning(push)
@@ -36,9 +37,6 @@
 using namespace boost::serialization;
 
 namespace boost {
-namespace serialization {
- class extended_type_info;
-}
 namespace archive {
 namespace detail {
 

Modified: branches/serialization_next_release/boost/libs/serialization/src/codecvt_null.cpp
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/src/codecvt_null.cpp (original)
+++ branches/serialization_next_release/boost/libs/serialization/src/codecvt_null.cpp 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -7,7 +7,7 @@
 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-#define BOOST_ARCHIVE_SOURCE
+#define BOOST_WARCHIVE_SOURCE
 #include <boost/archive/codecvt_null.hpp>
 
 // codecvt implementation for passing wchar_t objects to char output
@@ -17,7 +17,7 @@
 namespace boost {
 namespace archive {
 
-std::codecvt_base::result
+BOOST_WARCHIVE_DECL(std::codecvt_base::result)
 codecvt_null<wchar_t>::do_out(
     std::mbstate_t & state,
     const wchar_t * first1,
@@ -45,7 +45,7 @@
     return std::codecvt_base::ok;
 }
 
-std::codecvt_base::result
+BOOST_WARCHIVE_DECL(std::codecvt_base::result)
 codecvt_null<wchar_t>::do_in(
     std::mbstate_t & state,
     const char * first1,

Modified: branches/serialization_next_release/boost/libs/serialization/src/extended_type_info.cpp
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/src/extended_type_info.cpp (original)
+++ branches/serialization_next_release/boost/libs/serialization/src/extended_type_info.cpp 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -72,7 +72,7 @@
     ~extended_type_info_arg(){
         m_key = NULL;
     }
- virtual bool less_than(const extended_type_info &rhs) const {
+ virtual bool is_less_than(const extended_type_info &rhs) const {
         key_compare kc;
         return kc(this, & rhs);
     }
@@ -117,7 +117,7 @@
     return *(it);
 }
 
-BOOST_SERIALIZATION_DECL(BOOST_PP_EMPTY())
+BOOST_SERIALIZATION_DECL(BOOST_PP_EMPTY())
 extended_type_info::extended_type_info(
     const unsigned int type_info_key
 ) :
@@ -136,10 +136,10 @@
     key_unregister();
 }
 
-BOOST_SERIALIZATION_DECL(bool)
+BOOST_SERIALIZATION_DECL(bool)
 extended_type_info::operator<(const extended_type_info &rhs) const {
     if(m_type_info_key == rhs.m_type_info_key){
- return less_than(rhs);
+ return is_less_than(rhs);
     }
     if(m_type_info_key < rhs.m_type_info_key)
         return true;
@@ -148,13 +148,13 @@
 
 BOOST_SERIALIZATION_DECL(bool)
 extended_type_info::operator==(const extended_type_info &rhs) const {
+ // short cut for a common cases
     if(this == & rhs)
         return true;
- if(*this < rhs)
- return false;
- if(rhs < *this)
+ if(m_type_info_key != rhs.m_type_info_key){
         return false;
- return true;
+ }
+ return is_equal(rhs);
 };
 
 } // namespace serialization

Modified: branches/serialization_next_release/boost/libs/serialization/src/extended_type_info_typeid.cpp
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/src/extended_type_info_typeid.cpp (original)
+++ branches/serialization_next_release/boost/libs/serialization/src/extended_type_info_typeid.cpp 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -34,7 +34,7 @@
         const extended_type_info_typeid_0 * lhs,
         const extended_type_info_typeid_0 * rhs
     ) const {
- return lhs->less_than(*rhs);
+ return lhs->is_less_than(*rhs);
     }
 };
 
@@ -42,17 +42,23 @@
     const extended_type_info_typeid_0 *,
     type_compare
> tkmap;
-
+
 BOOST_SERIALIZATION_DECL(bool)
-extended_type_info_typeid_0::less_than(
+extended_type_info_typeid_0::is_less_than(
     const boost::serialization::extended_type_info & rhs
 ) const {
- //assert(this->m_type_info_key == rhs.m_type_info_key);
     return m_ti->before(
         *(static_cast<const extended_type_info_typeid_0 &>(rhs).m_ti)
     );
 }
 
+BOOST_SERIALIZATION_DECL(bool)
+extended_type_info_typeid_0::is_equal(
+ const boost::serialization::extended_type_info & rhs
+) const {
+ return * m_ti == *(static_cast<const extended_type_info_typeid_0 &>(rhs).m_ti);
+}
+
 BOOST_SERIALIZATION_DECL(BOOST_PP_EMPTY())
 extended_type_info_typeid_0::extended_type_info_typeid_0() :
     extended_type_info(EXTENDED_TYPE_INFO_TYPE_KEY),
@@ -85,7 +91,7 @@
         if(this == *start){
             x.erase(start);
             break;
- }
+ }
     }while(++start != end);
 
     m_ti = NULL;
@@ -112,7 +118,7 @@
 extended_type_info_typeid_0::get_extended_type_info(
     const std::type_info & ti
 ) const {
- detail::extended_type_info_typeid_arg etia(ti);
+ detail::extended_type_info_typeid_arg etia(ti);
     const tkmap & t = singleton<tkmap>::get_const_instance();
     const tkmap::const_iterator it = t.find(& etia);
     if(t.end() == it)

Modified: branches/serialization_next_release/boost/libs/serialization/src/void_cast.cpp
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/src/void_cast.cpp (original)
+++ branches/serialization_next_release/boost/libs/serialization/src/void_cast.cpp 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -24,6 +24,8 @@
 // BOOST
 #define BOOST_SERIALIZATION_SOURCE
 #include <boost/serialization/singleton.hpp>
+
+#define BOOST_SERIALIZATION_SOURCE
 #include <boost/serialization/extended_type_info.hpp>
 #include <boost/serialization/void_cast.hpp>
 

Modified: branches/serialization_next_release/boost/libs/serialization/test/A.cpp
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/test/A.cpp (original)
+++ branches/serialization_next_release/boost/libs/serialization/test/A.cpp 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -156,12 +156,12 @@
     return true;
 }
 
-inline bool A::operator!=(const A &rhs) const
+bool A::operator!=(const A &rhs) const
 {
     return ! (*this == rhs);
 }
 
-inline bool A::operator<(const A &rhs) const
+bool A::operator<(const A &rhs) const
 {
     if(b != rhs.b)
         return b < rhs.b;

Modified: branches/serialization_next_release/boost/libs/serialization/test/A.ipp
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/test/A.ipp (original)
+++ branches/serialization_next_release/boost/libs/serialization/test/A.ipp 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -64,4 +64,4 @@
     #endif
 }
 
-#endif // workaround
\ No newline at end of file
+#endif // workaround

Modified: branches/serialization_next_release/boost/libs/serialization/test/Jamfile.v2
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/test/Jamfile.v2 (original)
+++ branches/serialization_next_release/boost/libs/serialization/test/Jamfile.v2 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -23,61 +23,50 @@
     test-bsl-run_polymorphic_archive
 ;
 
-if 0 {
-lib dll_a
- : dll_a.cpp
- ../build//boost_serialization
- :
- <toolset>msvc:<cxxflags>/Gy
- ;
-
-test-suite "xxx" : [ run-template test_dll_one : test_dll_one.cpp dll_a ] ;
-}
-
 BOOST_ARCHIVE_LIST = [ modules.peek : BOOST_ARCHIVE_LIST ] ;
 
 test-suite "serialization" :
- [ test-bsl-run_files test_array ]
+ [ test-bsl-run_files test_array : a ]
      [ test-bsl-run_files test_binary ]
- [ test-bsl-run_files test_contained_class ]
- [ test-bsl-run_files test_cyclic_ptrs ]
+ [ test-bsl-run_files test_contained_class : a ]
+ [ test-bsl-run_files test_cyclic_ptrs : a ]
      [ test-bsl-run_files test_delete_pointer ]
- [ test-bsl-run_files test_deque ]
- [ test-bsl-run_files test_derived ]
- [ test-bsl-run_files test_derived_class ]
- [ test-bsl-run_files test_derived_class_ptr ]
+ [ test-bsl-run_files test_deque : a ]
+ # [ test-bsl-run_files test_derived ]
+ [ test-bsl-run_files test_derived_class : a ]
+ [ test-bsl-run_files test_derived_class_ptr : a ]
      [ test-bsl-run_files test_diamond ]
      [ test-bsl-run_files test_exported ]
      [ test-bsl-run_files test_class_info_load ]
      [ test-bsl-run_files test_class_info_save ]
      [ test-bsl-run_files test_object ]
      [ test-bsl-run_files test_primitive ]
- [ test-bsl-run_files test_list ]
- [ test-bsl-run_files test_list_ptrs ]
- [ test-bsl-run_files test_map ]
+ [ test-bsl-run_files test_list : a ]
+ [ test-bsl-run_files test_list_ptrs : a ]
+ [ test-bsl-run_files test_map : a ]
      [ test-bsl-run_files test_mi ]
- [ test-bsl-run_files test_multiple_ptrs ]
+ [ test-bsl-run_files test_multiple_ptrs : a ]
      [ test-bsl-run_files test_no_rtti ]
      [ test-bsl-run_files test_non_intrusive ]
      [ test-bsl-run_files test_non_default_ctor ]
      [ test-bsl-run_files test_non_default_ctor2 ]
      [ test-bsl-run_files test_null_ptr ]
- [ test-bsl-run_files test_nvp ]
- [ test-bsl-run_files test_recursion ]
+ [ test-bsl-run_files test_nvp : a ]
+ [ test-bsl-run_files test_recursion : a ]
      [ test-bsl-run_files test_registered ]
- [ test-bsl-run_files test_set ]
- [ test-bsl-run_files test_simple_class ]
- [ test-bsl-run_files test_simple_class_ptr ]
+ [ test-bsl-run_files test_set : a ]
+ [ test-bsl-run_files test_simple_class : a ]
+ [ test-bsl-run_files test_simple_class_ptr : a ]
      [ test-bsl-run_files test_split ]
      [ test-bsl-run_files test_tracking ]
      [ test-bsl-run_files test_unregistered ]
      [ test-bsl-run_files test_valarray ]
- [ test-bsl-run_files test_variant ]
- [ test-bsl-run_files test_vector ]
+ [ test-bsl-run_files test_variant : a ]
+ [ test-bsl-run_files test_vector : a ]
      [ test-bsl-run_files test_optional ]
      [ test-bsl-run_files test_shared_ptr ]
      [ test-bsl-run_files test_shared_ptr_132 ]
- [ test-bsl-run_polymorphic_archive test_polymorphic : test_polymorphic_A ]
+ [ test-bsl-run_polymorphic_archive test_polymorphic : test_polymorphic_A a ]
 ;
 
 if ! $(BOOST_ARCHIVE_LIST) {

Modified: branches/serialization_next_release/boost/libs/serialization/test/base.hpp
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/test/base.hpp (original)
+++ branches/serialization_next_release/boost/libs/serialization/test/base.hpp 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -29,8 +29,7 @@
     template<class Archive>
     void serialize(Archive & /* ar */, const unsigned int /* file_version */);
 public:
- // msvc 7.1 has a link time problem with making this abstract - look in to this
- virtual ~polymorphic_base() {} /* = 0 */;
+ virtual ~polymorphic_base(){};
 };
 
 //BOOST_IS_ABSTRACT(polymorphic_base)

Modified: branches/serialization_next_release/boost/libs/serialization/test/derived2.hpp
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/test/derived2.hpp (original)
+++ branches/serialization_next_release/boost/libs/serialization/test/derived2.hpp 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -18,6 +18,7 @@
 
 #include <boost/serialization/export.hpp>
 #include <boost/serialization/access.hpp>
+
 #include "base.hpp"
 
 #ifndef DLL_DECL

Modified: branches/serialization_next_release/boost/libs/serialization/test/dll_base.cpp
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/test/dll_base.cpp (original)
+++ branches/serialization_next_release/boost/libs/serialization/test/dll_base.cpp 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -28,7 +28,7 @@
 // for some reason this is required at least by MSVC
 // given that its declared virtual .. = 0; This
 // seems wrong to me but here it is.
-polymorphic_base::~polymorphic_base(){}
+//polymorphic_base::~polymorphic_base(){}
 
 // instantiate code for text archives
 #include <boost/archive/text_oarchive.hpp>

Modified: branches/serialization_next_release/boost/libs/serialization/test/dll_derived2.cpp
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/test/dll_derived2.cpp (original)
+++ branches/serialization_next_release/boost/libs/serialization/test/dll_derived2.cpp 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -36,4 +36,7 @@
 #include <boost/archive/polymorphic_iarchive.hpp>
 
 // note: export has to be AFTER #includes for all archive classes
+
+#include <boost/serialization/factory.hpp>
+BOOST_SERIALIZATION_FACTORY_0(polymorphic_derived2)
 BOOST_CLASS_EXPORT(polymorphic_derived2)

Modified: branches/serialization_next_release/boost/libs/serialization/test/test_contained_class.cpp
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/test/test_contained_class.cpp (original)
+++ branches/serialization_next_release/boost/libs/serialization/test/test_contained_class.cpp 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -22,6 +22,7 @@
 #include <boost/serialization/nvp.hpp>
 
 #include "B.hpp"
+#include "A.ipp"
 
 ///////////////////////////////////////////////////////
 // Contained class

Modified: branches/serialization_next_release/boost/libs/serialization/test/test_derived_class.cpp
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/test/test_derived_class.cpp (original)
+++ branches/serialization_next_release/boost/libs/serialization/test/test_derived_class.cpp 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -21,6 +21,7 @@
 #include "test_tools.hpp"
 
 #include "B.hpp"
+#include "A.ipp"
 
 int test_main( int argc, char* argv[] )
 {

Modified: branches/serialization_next_release/boost/libs/serialization/test/test_derived_class_ptr.cpp
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/test/test_derived_class_ptr.cpp (original)
+++ branches/serialization_next_release/boost/libs/serialization/test/test_derived_class_ptr.cpp 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -21,6 +21,7 @@
 #include "test_tools.hpp"
 
 #include "B.hpp"
+#include "A.ipp"
 
 int test_main( int /* argc */, char* /* argv */[] )
 {

Modified: branches/serialization_next_release/boost/libs/serialization/test/test_multiple_ptrs.cpp
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/test/test_multiple_ptrs.cpp (original)
+++ branches/serialization_next_release/boost/libs/serialization/test/test_multiple_ptrs.cpp 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -21,6 +21,7 @@
 #include "test_tools.hpp"
 
 #include "D.hpp"
+#include "A.ipp"
 
 int test_main( int /* argc */, char* /* argv */[] )
 {

Modified: branches/serialization_next_release/boost/libs/serialization/test/test_no_rtti.cpp
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/test/test_no_rtti.cpp (original)
+++ branches/serialization_next_release/boost/libs/serialization/test/test_no_rtti.cpp 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -55,7 +55,7 @@
     extended_type_info_no_rtti<polymorphic_base>
 )
 // note: types which use ...no_rtti MUST be exported
-// BOOST_CLASS_EXPORT(polymorphic_base)
+BOOST_CLASS_EXPORT(polymorphic_base)
 
 class polymorphic_derived1 : public polymorphic_base
 {

Modified: branches/serialization_next_release/boost/libs/serialization/test/test_nvp.cpp
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/test/test_nvp.cpp (original)
+++ branches/serialization_next_release/boost/libs/serialization/test/test_nvp.cpp 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -23,6 +23,7 @@
 #include <boost/serialization/nvp.hpp>
 
 #include "B.hpp"
+#include "A.ipp"
 
 int test_main( int argc, char* argv[] )
 {

Modified: branches/serialization_next_release/boost/libs/serialization/test/test_recursion.cpp
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/test/test_recursion.cpp (original)
+++ branches/serialization_next_release/boost/libs/serialization/test/test_recursion.cpp 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -21,6 +21,7 @@
 #include "test_tools.hpp"
 
 #include "J.hpp"
+#include "A.ipp"
 
 int test_main( int /* argc */, char* /* argv */[] )
 {

Modified: branches/serialization_next_release/boost/libs/serialization/test/test_tools.hpp
==============================================================================
--- branches/serialization_next_release/boost/libs/serialization/test/test_tools.hpp (original)
+++ branches/serialization_next_release/boost/libs/serialization/test/test_tools.hpp 2007-11-27 01:26:56 EST (Tue, 27 Nov 2007)
@@ -160,7 +160,7 @@
         test_main(argc, argv);
     }
     #ifndef BOOST_NO_EXCEPTION_STD_NAMESPACE
- BOOST_CATCH(const std::exception e){
+ BOOST_CATCH(const std::exception & e){
             BOOST_ERROR(e.what());
         }
     #endif


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk