$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r58296 - trunk/boost/serialization
From: ramey_at_[hidden]
Date: 2009-12-11 14:32:30
Author: ramey
Date: 2009-12-11 14:32:30 EST (Fri, 11 Dec 2009)
New Revision: 58296
URL: http://svn.boost.org/trac/boost/changeset/58296
Log:
Call dtor through serialization::access in order to permit private dtors/ctors
Text files modified: 
   trunk/boost/serialization/extended_type_info.hpp         |     9 ++-------                               
   trunk/boost/serialization/extended_type_info_no_rtti.hpp |     8 +++++++-                                
   trunk/boost/serialization/extended_type_info_typeid.hpp  |    17 ++++++++---------                       
   trunk/boost/serialization/weak_ptr.hpp                   |     4 ++--                                    
   4 files changed, 19 insertions(+), 19 deletions(-)
Modified: trunk/boost/serialization/extended_type_info.hpp
==============================================================================
--- trunk/boost/serialization/extended_type_info.hpp	(original)
+++ trunk/boost/serialization/extended_type_info.hpp	2009-12-11 14:32:30 EST (Fri, 11 Dec 2009)
@@ -82,13 +82,8 @@
     }
     static const extended_type_info * find(const char *key);
     // for plugins
-    virtual void * construct(unsigned int /*count*/ = 0, ...) const {
-        assert(false); // must be implemented if used
-        return NULL;
-    };
-    virtual void destroy(void const * const /*p*/) const {
-        assert(false); // must be implemented if used
-    }
+    virtual void * construct(unsigned int /*count*/ = 0, ...) const = 0;
+    virtual void destroy(void const * const /*p*/) const = 0;
 };
 
 template<class T>
Modified: trunk/boost/serialization/extended_type_info_no_rtti.hpp
==============================================================================
--- trunk/boost/serialization/extended_type_info_no_rtti.hpp	(original)
+++ trunk/boost/serialization/extended_type_info_no_rtti.hpp	2009-12-11 14:32:30 EST (Fri, 11 Dec 2009)
@@ -31,6 +31,9 @@
 #include <boost/serialization/factory.hpp>
 #include <boost/serialization/throw_exception.hpp>
 
+// hijack serialization access
+#include <boost/serialization/access.hpp>
+
 #include <boost/config/abi_prefix.hpp> // must be the last header
 #ifdef BOOST_MSVC
 #  pragma warning(push)
@@ -141,7 +144,10 @@
         }
     }
     virtual void destroy(void const * const p) const{
-        delete static_cast<T const *>(p) ;
+        boost::serialization::access::destroy(
+            static_cast<T const * const>(p)
+        );
+        //delete static_cast<T const * const>(p) ;
     }
 };
 
Modified: trunk/boost/serialization/extended_type_info_typeid.hpp
==============================================================================
--- trunk/boost/serialization/extended_type_info_typeid.hpp	(original)
+++ trunk/boost/serialization/extended_type_info_typeid.hpp	2009-12-11 14:32:30 EST (Fri, 11 Dec 2009)
@@ -32,6 +32,9 @@
 #include <boost/serialization/extended_type_info.hpp>
 #include <boost/serialization/factory.hpp>
 
+// hijack serialization access
+#include <boost/serialization/access.hpp>
+
 #include <boost/mpl/if.hpp>
 
 #include <boost/config/abi_prefix.hpp> // must be the last header
@@ -125,15 +128,11 @@
             return NULL;
         }
     }
-    virtual void destroy(void const * const /* p */) const {
-        // the only current usage of extended type info is in the
-        // serialization library.  The statement below requires
-        // that destructor of type T be public and this creates
-        // a problem for some users.  So, for now, comment this
-        // out 
-        //delete static_cast<T const *>(p);
-        // and trap any attempt to invoke this function
-        assert(false);
+    virtual void destroy(void const * const p) const {
+        boost::serialization::access::destroy(
+            static_cast<T const * const>(p)
+        );
+        //delete static_cast<T const * const>(p);
     }
 };
 
Modified: trunk/boost/serialization/weak_ptr.hpp
==============================================================================
--- trunk/boost/serialization/weak_ptr.hpp	(original)
+++ trunk/boost/serialization/weak_ptr.hpp	2009-12-11 14:32:30 EST (Fri, 11 Dec 2009)
@@ -29,7 +29,7 @@
     const unsigned int /* file_version */
 ){
     const boost::shared_ptr<T> sp = t.lock();
-        ar << boost::serialization::make_nvp("shared_ptr", sp);
+    ar << boost::serialization::make_nvp("weak_ptr", sp);
 }
 
 template<class Archive, class T>
@@ -39,7 +39,7 @@
     const unsigned int /* file_version */
 ){
     boost::shared_ptr<T> sp;
-        ar >> boost::serialization::make_nvp("shared_ptr", sp);
+    ar >> boost::serialization::make_nvp("weak_ptr", sp);
     t = sp;
 }