$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: ramey_at_[hidden]
Date: 2007-09-27 00:01:57
Author: ramey
Date: 2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
New Revision: 39564
URL: http://svn.boost.org/trac/boost/changeset/39564
Log:
improvements to extended type info system - unfortunately, these break the export.
Removed:
   branches/serialization_next_release/boost/boost/archive/detail/known_archive_types.hpp
   branches/serialization_next_release/boost/boost/archive/detail/known_archive_types_fwd.hpp
Text files modified: 
   branches/serialization_next_release/boost/boost/archive/basic_archive.hpp                    |     4 +-                                      
   branches/serialization_next_release/boost/boost/archive/basic_binary_iprimitive.hpp          |    29 ++++------------                        
   branches/serialization_next_release/boost/boost/archive/basic_binary_oprimitive.hpp          |     3 +                                       
   branches/serialization_next_release/boost/boost/archive/basic_streambuf_locale_saver.hpp     |     3 -                                       
   branches/serialization_next_release/boost/boost/archive/basic_text_iprimitive.hpp            |     4 ++                                      
   branches/serialization_next_release/boost/boost/archive/basic_text_oarchive.hpp              |     2                                         
   branches/serialization_next_release/boost/boost/archive/basic_text_oprimitive.hpp            |     3 +                                       
   branches/serialization_next_release/boost/boost/archive/detail/basic_iarchive.hpp            |     3 -                                       
   branches/serialization_next_release/boost/boost/archive/detail/basic_oarchive.hpp            |     3 -                                       
   branches/serialization_next_release/boost/boost/archive/detail/basic_pointer_iserializer.hpp |     6 +-                                      
   branches/serialization_next_release/boost/boost/archive/detail/basic_pointer_oserializer.hpp |     6 +-                                      
   branches/serialization_next_release/boost/boost/archive/detail/interface_iarchive.hpp        |     6 ---                                     
   branches/serialization_next_release/boost/boost/archive/detail/interface_oarchive.hpp        |     7 ---                                     
   branches/serialization_next_release/boost/boost/archive/detail/iserializer.hpp               |    51 +++++------------------------           
   branches/serialization_next_release/boost/boost/archive/detail/oserializer.hpp               |    69 ++++++++++++--------------------------- 
   branches/serialization_next_release/boost/boost/archive/impl/basic_binary_iarchive.ipp       |     1                                         
   branches/serialization_next_release/boost/boost/archive/impl/basic_binary_iprimitive.ipp     |     5 ++                                      
   branches/serialization_next_release/boost/boost/archive/impl/basic_binary_oprimitive.ipp     |     5 ++                                      
   branches/serialization_next_release/boost/boost/archive/impl/basic_text_iarchive.ipp         |     1                                         
   branches/serialization_next_release/boost/boost/archive/impl/basic_text_iprimitive.ipp       |     9 ++++                                    
   branches/serialization_next_release/boost/boost/archive/impl/basic_text_oprimitive.ipp       |     7 ++++                                    
   branches/serialization_next_release/boost/boost/archive/impl/basic_xml_iarchive.ipp          |     1                                         
   branches/serialization_next_release/boost/boost/archive/shared_ptr_helper.hpp                |     4 +                                       
   23 files changed, 86 insertions(+), 146 deletions(-)
Modified: branches/serialization_next_release/boost/boost/archive/basic_archive.hpp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/basic_archive.hpp	(original)
+++ branches/serialization_next_release/boost/boost/archive/basic_archive.hpp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -86,8 +86,8 @@
     no_header = 1,  // suppress archive header info
     no_codecvt = 2,  // suppress alteration of codecvt facet
     no_xml_tag_checking = 4,   // suppress checking of xml tags
-    no_tracking = 8           // suppress ALL tracking
-//    no_object_creation = 16    // don't create any new objects
+    no_tracking = 8,           // suppress ALL tracking
+    flags_last = 8
 };
 
 #define NULL_POINTER_TAG class_id_type(-1)
Modified: branches/serialization_next_release/boost/boost/archive/basic_binary_iprimitive.hpp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/basic_binary_iprimitive.hpp	(original)
+++ branches/serialization_next_release/boost/boost/archive/basic_binary_iprimitive.hpp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -6,6 +6,10 @@
 # pragma once
 #endif
 
+#if defined(_MSC_VER)
+#pragma warning( disable : 4800 )
+#endif
+
 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
 // basic_binary_iprimitive.hpp
 //
@@ -72,8 +76,11 @@
     Archive * This(){
         return static_cast<Archive *>(this);
     }
+
+    #ifndef BOOST_NO_STD_LOCALE
     boost::scoped_ptr<std::locale> archive_locale;
     basic_streambuf_locale_saver<Elem, Tr> locale_saver;
+    #endif
 
     // main template for serilization of primitive types
     template<class T>
@@ -132,28 +139,6 @@
     void *address, 
     std::size_t count
 ){
-#if 0
-    assert(
-        static_cast<std::size_t>((std::numeric_limits<std::streamsize>::max)()) >= count
-    );
-    //if(is.fail())
-    //    boost::throw_exception(archive_exception(archive_exception::stream_error));
-    // note: an optimizer should eliminate the following for char files
-    std::size_t s = count / sizeof(BOOST_DEDUCED_TYPENAME IStream::char_type);
-    is.read(
-        static_cast<BOOST_DEDUCED_TYPENAME IStream::char_type *>(address), 
-        s
-    );
-    // note: an optimizer should eliminate the following for char files
-    s = count % sizeof(BOOST_DEDUCED_TYPENAME IStream::char_type);
-    if(0 < s){
-        if(is.fail())
-            boost::throw_exception(archive_exception(archive_exception::stream_error));
-        BOOST_DEDUCED_TYPENAME IStream::char_type t;
-        is.read(& t, 1);
-        std::memcpy(address, &t, s);
-    }
-#endif
     // note: an optimizer should eliminate the following for char files
     std::streamsize s = count / sizeof(Elem);
     std::streamsize scount = m_sb.sgetn(
Modified: branches/serialization_next_release/boost/boost/archive/basic_binary_oprimitive.hpp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/basic_binary_oprimitive.hpp	(original)
+++ branches/serialization_next_release/boost/boost/archive/basic_binary_oprimitive.hpp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -71,9 +71,10 @@
     Archive * This(){
         return static_cast<Archive *>(this);
     }
+    #ifndef BOOST_NO_STD_LOCALE
     boost::scoped_ptr<std::locale> archive_locale;
     basic_streambuf_locale_saver<Elem, Tr> locale_saver;
-
+    #endif
     // default saving of primitives.
     template<class T>
     void save(const T & t)
Modified: branches/serialization_next_release/boost/boost/archive/basic_streambuf_locale_saver.hpp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/basic_streambuf_locale_saver.hpp	(original)
+++ branches/serialization_next_release/boost/boost/archive/basic_streambuf_locale_saver.hpp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -25,14 +25,13 @@
 //  See <http://www.boost.org/libs/io/> for the library's home page.
 
 #ifndef BOOST_NO_STD_LOCALE
+
 #include <locale>     // for std::locale
-#endif
 #include <streambuf>  // for std::basic_streambuf
 
 namespace boost{
 namespace archive{
 
-#ifndef BOOST_NO_STD_LOCALE
 template < typename Ch, class Tr >
 class basic_streambuf_locale_saver
 {
Modified: branches/serialization_next_release/boost/boost/archive/basic_text_iprimitive.hpp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/basic_text_iprimitive.hpp	(original)
+++ branches/serialization_next_release/boost/boost/archive/basic_text_iprimitive.hpp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -68,10 +68,14 @@
     IStream &is;
     io::ios_flags_saver flags_saver;
     io::ios_precision_saver precision_saver;
+
+    #ifndef BOOST_NO_STD_LOCALE
     boost::scoped_ptr<std::locale> archive_locale;
     io::basic_ios_locale_saver<
         BOOST_DEDUCED_TYPENAME IStream::char_type, BOOST_DEDUCED_TYPENAME IStream::traits_type
     > locale_saver;
+    #endif
+
     template<class T>
     void load(T & t)
     {
Modified: branches/serialization_next_release/boost/boost/archive/basic_text_oarchive.hpp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/basic_text_oarchive.hpp	(original)
+++ branches/serialization_next_release/boost/boost/archive/basic_text_oarchive.hpp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -38,7 +38,7 @@
 namespace archive {
 
 /////////////////////////////////////////////////////////////////////////
-// class basic_text_iarchive - read serialized objects from a input text stream
+// class basic_text_oarchive 
 template<class Archive>
 class basic_text_oarchive : 
     public detail::common_oarchive<Archive>
Modified: branches/serialization_next_release/boost/boost/archive/basic_text_oprimitive.hpp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/basic_text_oprimitive.hpp	(original)
+++ branches/serialization_next_release/boost/boost/archive/basic_text_oprimitive.hpp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -71,10 +71,13 @@
     OStream &os;
     io::ios_flags_saver flags_saver;
     io::ios_precision_saver precision_saver;
+
+    #ifndef BOOST_NO_STD_LOCALE
     boost::scoped_ptr<std::locale> archive_locale;
     io::basic_ios_locale_saver<
         BOOST_DEDUCED_TYPENAME OStream::char_type, BOOST_DEDUCED_TYPENAME OStream::traits_type
     > locale_saver;
+    #endif
 
     // default saving of primitives.
     template<class T>
Modified: branches/serialization_next_release/boost/boost/archive/detail/basic_iarchive.hpp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/detail/basic_iarchive.hpp	(original)
+++ branches/serialization_next_release/boost/boost/archive/detail/basic_iarchive.hpp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -26,9 +26,6 @@
 #include <boost/archive/detail/abi_prefix.hpp> // must be the last header
 
 namespace boost {
-template<class T>
-class shared_ptr;
-
 namespace serialization {
     class extended_type_info;
 } // namespace serialization
Modified: branches/serialization_next_release/boost/boost/archive/detail/basic_oarchive.hpp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/detail/basic_oarchive.hpp	(original)
+++ branches/serialization_next_release/boost/boost/archive/detail/basic_oarchive.hpp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -28,9 +28,6 @@
 #include <boost/archive/detail/abi_prefix.hpp> // must be the last header
 
 namespace boost {
-template<class T>
-class shared_ptr;
-
 namespace serialization {
     class extended_type_info;
 } // namespace serialization
Modified: branches/serialization_next_release/boost/boost/archive/detail/basic_pointer_iserializer.hpp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/detail/basic_pointer_iserializer.hpp	(original)
+++ branches/serialization_next_release/boost/boost/archive/detail/basic_pointer_iserializer.hpp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -1,5 +1,5 @@
-#ifndef BOOST_ARCHIVE_BASIC_ARCHIVE_POINTER_ISERIALIZER_HPP
-#define BOOST_ARCHIVE_BASIC_ARCHIVE_POINTER_ISERIALIZER_HPP
+#ifndef BOOST_ARCHIVE_BASIC_POINTER_ISERIALIZER_HPP
+#define BOOST_ARCHIVE_BASIC_POINTER_ISERIALIZER_HPP
 
 // MS compatible compilers support #pragma once
 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
@@ -61,4 +61,4 @@
 
 #include <boost/archive/detail/abi_suffix.hpp> // pops abi_suffix.hpp pragmas
 
-#endif // BOOST_ARCHIVE_BASIC_ARCHIVE_POINTER_ISERIALIZER_HPP
+#endif // BOOST_ARCHIVE_BASIC_POINTER_ISERIALIZER_HPP
Modified: branches/serialization_next_release/boost/boost/archive/detail/basic_pointer_oserializer.hpp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/detail/basic_pointer_oserializer.hpp	(original)
+++ branches/serialization_next_release/boost/boost/archive/detail/basic_pointer_oserializer.hpp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -1,5 +1,5 @@
-#ifndef BOOST_ARCHIVE_BASIC_ARCHIVE_POINTER_OSERIALIZER_HPP
-#define BOOST_ARCHIVE_BASIC_ARCHIVE_POINTER_OSERIALIZER_HPP
+#ifndef BOOST_ARCHIVE_BASIC_POINTER_OSERIALIZER_HPP
+#define BOOST_ARCHIVE_BASIC_POINTER_OSERIALIZER_HPP
 
 // MS compatible compilers support #pragma once
 #if defined(_MSC_VER) && (_MSC_VER >= 1020)
@@ -59,4 +59,4 @@
 
 #include <boost/archive/detail/abi_suffix.hpp> // pops abi_suffix.hpp pragmas
 
-#endif // BOOST_ARCHIVE_BASIC_ARCHIVE_POINTER_OSERIALIZER_HPP
+#endif // BOOST_ARCHIVE_BASIC_POINTER_OSERIALIZER_HPP
Modified: branches/serialization_next_release/boost/boost/archive/detail/interface_iarchive.hpp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/detail/interface_iarchive.hpp	(original)
+++ branches/serialization_next_release/boost/boost/archive/detail/interface_iarchive.hpp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -23,12 +23,6 @@
 #include <boost/archive/detail/abi_prefix.hpp> // must be the last header
 
 namespace boost {
-template<class T>
-class shared_ptr;
-namespace serialization {
-    class extended_type_info;
-} // namespace serialization
-
 namespace archive {
 namespace detail {
 
Modified: branches/serialization_next_release/boost/boost/archive/detail/interface_oarchive.hpp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/detail/interface_oarchive.hpp	(original)
+++ branches/serialization_next_release/boost/boost/archive/detail/interface_oarchive.hpp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -23,12 +23,7 @@
 #include <boost/archive/detail/oserializer.hpp>
 #include <boost/archive/detail/abi_prefix.hpp> // must be the last header
 
-namespace boost { 
-template<class T>
-class shared_ptr;
-namespace serialization {
-    class extended_type_info;
-} // namespace serialization
+namespace boost {
 namespace archive {
 namespace detail {
 
Modified: branches/serialization_next_release/boost/boost/archive/detail/iserializer.hpp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/detail/iserializer.hpp	(original)
+++ branches/serialization_next_release/boost/boost/archive/detail/iserializer.hpp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -110,7 +110,7 @@
     // static one
     explicit iserializer() :
         basic_iserializer(
-            * boost::serialization::type_info_implementation<T>::type::get_instance()
+            * boost::serialization::type_info_implementation<T>::type::find()
         )
     {}
 public:
@@ -136,11 +136,7 @@
         return ::boost::serialization::version<T>::value;
     }
     virtual bool is_polymorphic() const {
-        typedef BOOST_DEDUCED_TYPENAME 
-            boost::serialization::type_info_implementation<
-                T
-            >::type::is_polymorphic::type typex;
-        return typex::value;
+        return boost::is_polymorphic<T>::value;
     }
     static iserializer & get_instance(){
         static iserializer instance;
@@ -305,18 +301,14 @@
 }
 
 template<class Archive, class T>
-#if !defined(__BORLANDC__)
 BOOST_DLLEXPORT pointer_iserializer<Archive, T>::pointer_iserializer() :
     archive_pointer_iserializer<Archive>(
-        * boost::serialization::type_info_implementation<T>::type::get_instance()
-    ),
-    m(boost::serialization::serialize_adl<Archive, T>),
-    e(boost::serialization::type_info_implementation<T>::type::get_instance)
-#else
-BOOST_DLLEXPORT pointer_iserializer<Archive, T>::pointer_iserializer() :
-    archive_pointer_iserializer<Archive>(
-        * boost::serialization::type_info_implementation<T>::type::get_instance()
+        * boost::serialization::type_info_implementation<T>::type::find()
     )
+#if !defined(__BORLANDC__)
+    ,
+    m(boost::serialization::serialize_adl<Archive, T>),
+    e(boost::serialization::type_info_implementation<T>::type::find)
 #endif
 {
     iserializer<Archive, T> & bis = iserializer<Archive, T>::get_instance();
@@ -421,12 +413,8 @@
     struct abstract
     {
         static const basic_pointer_iserializer * register_type(Archive & /* ar */){
-            #if ! defined(__BORLANDC__)
-            typedef BOOST_DEDUCED_TYPENAME 
-                boost::serialization::type_info_implementation<T>::type::is_polymorphic typex;
             // it has? to be polymorphic
-            BOOST_STATIC_ASSERT(typex::value);
-            #endif
+            BOOST_STATIC_ASSERT(boost::is_polymorphic<T>::value);
             return static_cast<basic_pointer_iserializer *>(NULL);
          }
     };
@@ -464,7 +452,7 @@
         return static_cast<T *>(
             boost::serialization::void_upcast(
                 eti,
-                * boost::serialization::type_info_implementation<T>::type::get_instance(),
+                * boost::serialization::type_info_implementation<T>::type::find(),
                 t
             )
         );
@@ -514,27 +502,6 @@
     }
 };
 
-#if 0
-// note bogus arguments to workaround msvc 6 silent runtime failure
-template<class Archive, class T>
-BOOST_DLLEXPORT 
-inline const basic_pointer_iserializer &
-instantiate_pointer_iserializer(
-    Archive * /* ar = NULL */,
-    T * /* t = NULL */
-) BOOST_USED;
-
-template<class Archive, class T>
-BOOST_DLLEXPORT 
-inline const basic_pointer_iserializer &
-instantiate_pointer_iserializer(
-    Archive * /* ar = NULL */,
-    T * /* t = NULL */
-){
-    return pointer_iserializer<Archive,T>::instance;
-}
-#endif
-
 } // detail
 
 template<class Archive, class T>
Deleted: branches/serialization_next_release/boost/boost/archive/detail/known_archive_types.hpp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/detail/known_archive_types.hpp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
+++ (empty file)
@@ -1,93 +0,0 @@
-#ifndef BOOST_ARCHIVE_KNOWN_ARCHIVE_TYPES_HPP
-#define BOOST_ARCHIVE_KNOWN_ARCHIVE_TYPES_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// known_archive_types.hpp: set traits of classes to be serialized
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-// list of archive type shipped with the serialization system
-
-#include <boost/mpl/list.hpp>
-#include <boost/mpl/pop_front.hpp>
-
-namespace boost { 
-namespace archive {
-
-//    class text_oarchive;
-namespace detail {
-
-class null_type;
-
-struct known_archive_types {
-    typedef 
-        mpl::pop_front<
-            mpl::list<
-                null_type
-                #if defined(BOOST_ARCHIVE_TEXT_OARCHIVE_HPP)
-                    , boost::archive::text_oarchive
-                #endif
-                #if defined(BOOST_ARCHIVE_TEXT_IARCHIVE_HPP)
-                    , boost::archive::text_iarchive
-                #endif
-                #if defined(BOOST_ARCHIVE_TEXT_WOARCHIVE_HPP)
-                    , boost::archive::text_woarchive
-                #endif
-                #if defined(BOOST_ARCHIVE_TEXT_WIARCHIVE_HPP)
-                    , boost::archive::text_wiarchive
-                #endif
-                #if defined(BOOST_ARCHIVE_BINARY_OARCHIVE_HPP)
-                    , boost::archive::binary_oarchive
-                #endif
-                #if defined(BOOST_ARCHIVE_BINARY_IARCHIVE_HPP)
-                    , boost::archive::binary_iarchive
-                #endif
-                #if defined(BOOST_ARCHIVE_BINARY_WOARCHIVE_HPP)
-                    , boost::archive::binary_woarchive
-                #endif
-                #if defined(BOOST_ARCHIVE_BINARY_WIARCHIVE_HPP)
-                    , boost::archive::binary_wiarchive
-                #endif
-                #if defined(BOOST_ARCHIVE_XML_OARCHIVE_HPP)
-                    , boost::archive::xml_oarchive
-                #endif
-                #if defined(BOOST_ARCHIVE_XML_IARCHIVE_HPP)
-                    , boost::archive::xml_iarchive
-                #endif
-                #if defined(BOOST_ARCHIVE_XML_WOARCHIVE_HPP)
-                    , boost::archive::xml_woarchive
-                #endif
-                #if defined(BOOST_ARCHIVE_XML_WIARCHIVE_HPP)
-                    , boost::archive::xml_wiarchive
-                #endif
-                #if defined(BOOST_ARCHIVE_POLYMORPHIC_OARCHIVE_HPP)
-                    , boost::archive::polymorphic_oarchive
-                #endif
-                #if defined(BOOST_ARCHIVE_POLYMORPHIC_IARCHIVE_HPP)
-                    , boost::archive::polymorphic_iarchive
-                #endif
-                #if defined(BOOST_ARCHIVE_CUSTOM_IARCHIVE_TYPES)
-                    , BOOST_ARCHIVE_CUSTOM_IARCHIVE_TYPES
-                #endif
-                #if defined(BOOST_ARCHIVE_CUSTOM_OARCHIVE_TYPES)
-                    , BOOST_ARCHIVE_CUSTOM_OARCHIVE_TYPES
-                #endif
-            >::type
-        >::type type;
-};
-
-} // namespace detail
-} // namespace archive
-} // namespace boost
-
-#endif // BOOST_ARCHIVE_KNOWN_ARCHIVE_TYPES_HPP
Deleted: branches/serialization_next_release/boost/boost/archive/detail/known_archive_types_fwd.hpp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/detail/known_archive_types_fwd.hpp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
+++ (empty file)
@@ -1,39 +0,0 @@
-#ifndef BOOST_ARCHIVE_KNOWN_ARCHIVE_TYPES_FWD_HPP
-#define BOOST_ARCHIVE_KNOWN_ARCHIVE_TYPES_FWD_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// known_archive_types_fwd.hpp: set traits of classes to be serialized
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com . 
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org for updates, documentation, and revision history.
-
-// list of archive type shipped with the serialization system
-
-#include <boost/mpl/list.hpp>
-
-namespace boost {
-namespace archive {
-namespace detail {
-
-// default implementation of known_archive_types list - 0 elements
-// used to generate warning when a polymporhic pointer is serialized
-// to an unknown archive - export would otherwise fail silently
-template<bool>
-struct known_archive_types {
-    typedef mpl::list<> type;
-};
-
-} // namespace detail
-} // namespace archive
-} // namespace boost
-
-#endif // BOOST_ARCHIVE_KNOWN_ARCHIVE_TYPES_FWD
Modified: branches/serialization_next_release/boost/boost/archive/detail/oserializer.hpp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/detail/oserializer.hpp	(original)
+++ branches/serialization_next_release/boost/boost/archive/detail/oserializer.hpp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -37,6 +37,7 @@
 #include <boost/type_traits/is_volatile.hpp>
 #include <boost/type_traits/is_const.hpp>
 #include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/is_polymorphic.hpp>
 #include <boost/type_traits/remove_all_extents.hpp>
 #include <boost/serialization/is_abstract.hpp>
 
@@ -106,7 +107,7 @@
     // static one
     explicit BOOST_DLLEXPORT oserializer() :
         basic_oserializer(
-            * boost::serialization::type_info_implementation<T>::type::get_instance()
+            * boost::serialization::type_info_implementation<T>::type::find()
         )
     {}
 public:
@@ -129,10 +130,7 @@
         return ::boost::serialization::version<T>::value;
     }
     virtual bool is_polymorphic() const {
-        typedef BOOST_DEDUCED_TYPENAME boost::serialization::type_info_implementation<
-            T
-        >::type::is_polymorphic::type typex;
-        return typex::value;
+        return boost::is_polymorphic<T>::value;
     }
     static oserializer & get_instance(){
         static oserializer instance;
@@ -205,18 +203,14 @@
 }
 
 template<class Archive, class T>
-#if !defined(__BORLANDC__)
 BOOST_DLLEXPORT pointer_oserializer<Archive, T>::pointer_oserializer() :
     archive_pointer_oserializer<Archive>(
-        * boost::serialization::type_info_implementation<T>::type::get_instance()
-    ),
-    m(boost::serialization::serialize_adl<Archive, T>),
-    e(boost::serialization::type_info_implementation<T>::type::get_instance)
-#else
-BOOST_DLLEXPORT pointer_oserializer<Archive, T>::pointer_oserializer() :
-    archive_pointer_oserializer<Archive>(
-        * boost::serialization::type_info_implementation<T>::type::get_instance()
+        * boost::serialization::type_info_implementation<T>::type::find()
     )
+#if !defined(__BORLANDC__)
+    ,    
+    m(boost::serialization::serialize_adl<Archive, T>),
+    e(boost::serialization::type_info_implementation<T>::type::find)
 #endif
 {
     // make sure appropriate member function is instantiated
@@ -325,9 +319,7 @@
     {
         static const basic_pointer_oserializer * register_type(Archive & /* ar */){
             // it has? to be polymorphic
-            BOOST_STATIC_ASSERT(
-                boost::serialization::type_info_implementation<T>::type::is_polymorphic::value
-            );
+            BOOST_STATIC_ASSERT(boost::is_polymorphic<T>::value);
             return static_cast<const basic_pointer_oserializer *>(NULL);
         }
     };
@@ -377,14 +369,14 @@
             const basic_pointer_oserializer * bpos_ptr
         ){
             const boost::serialization::extended_type_info * this_type
-                = boost::serialization::type_info_implementation<T>::type::get_instance();
+                = boost::serialization::type_info_implementation<T>::type::find();
             // retrieve the true type of the object pointed to
             // if this assertion fails its an error in this library
             assert(NULL != this_type);
             const boost::serialization::extended_type_info * true_type 
                 = boost::serialization::type_info_implementation<T>::type::get_derived_extended_type_info(t);
             // note:if this exception is thrown, be sure that derived pointer
-            // is either regsitered or exported.
+            // is either registered or exported.
             if(NULL == true_type){
                 boost::throw_exception(
                     archive_exception(archive_exception::unregistered_class)
@@ -419,19 +411,23 @@
         }
     };
 
+    // out of line selector works around borland quirk
+    template<class T>
+    struct conditional {
+        typedef BOOST_DEDUCED_TYPENAME mpl::eval_if<
+            is_polymorphic<T>,
+            mpl::identity<polymorphic<T> >,
+            mpl::identity<non_polymorphic<T> >
+        >::type type;
+    };
+
     template<class T>
     static void save(
         Archive & ar, 
         const T &t,
         const basic_pointer_oserializer * bpos_ptr
     ){
-        typedef BOOST_DEDUCED_TYPENAME mpl::eval_if<
-            BOOST_DEDUCED_TYPENAME boost::serialization::
-                type_info_implementation<T>::type::is_polymorphic,
-            mpl::identity<polymorphic<T> >,
-            mpl::identity<non_polymorphic<T> >
-        >::type typey;
-        typey::save(ar, const_cast<T &>(t), bpos_ptr);
+        conditional<T>::type::save(ar, const_cast<T &>(t), bpos_ptr);
     }
 
     template<class T>
@@ -490,27 +486,6 @@
     }
 };
 
-
-#if 0
-// note bogus arguments to workaround msvc 6 silent runtime failure
-// declaration to satisfy gcc
-template<class Archive, class T>
-BOOST_DLLEXPORT const basic_pointer_oserializer &
-instantiate_pointer_oserializer(
-    Archive * /* ar = NULL */,
-    T * /* t = NULL */
-) BOOST_USED ;
-// definition
-template<class Archive, class T>
-BOOST_DLLEXPORT const basic_pointer_oserializer &
-instantiate_pointer_oserializer(
-    Archive * /* ar = NULL */,
-    T * /* t = NULL */
-){
-    return pointer_oserializer<Archive, T>::instance;
-}
-#endif
-
 } // detail
 
 template<class Archive, class T>
Modified: branches/serialization_next_release/boost/boost/archive/impl/basic_binary_iarchive.ipp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/impl/basic_binary_iarchive.ipp	(original)
+++ branches/serialization_next_release/boost/boost/archive/impl/basic_binary_iarchive.ipp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -22,7 +22,6 @@
 #include <boost/detail/workaround.hpp>
 
 #include <boost/archive/basic_binary_iarchive.hpp>
-//#include <boost/serialization/extended_type_info.hpp>
 
 namespace boost {
 namespace archive {
Modified: branches/serialization_next_release/boost/boost/archive/impl/basic_binary_iprimitive.ipp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/impl/basic_binary_iprimitive.ipp	(original)
+++ branches/serialization_next_release/boost/boost/archive/impl/basic_binary_iprimitive.ipp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -133,6 +133,7 @@
     std::basic_streambuf<Elem, Tr> & sb, 
     bool no_codecvt
 ) :
+#ifndef BOOST_NO_STD_LOCALE
     m_sb(sb),
     archive_locale(NULL),
     locale_saver(m_sb)
@@ -147,6 +148,10 @@
         m_sb.pubimbue(* archive_locale);
     }
 }
+#else
+    m_sb(sb)
+{}
+#endif
 
 // some libraries including stl and libcomo fail if the
 // buffer isn't flushed before the code_cvt facet is changed.
Modified: branches/serialization_next_release/boost/boost/archive/impl/basic_binary_oprimitive.ipp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/impl/basic_binary_oprimitive.ipp	(original)
+++ branches/serialization_next_release/boost/boost/archive/impl/basic_binary_oprimitive.ipp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -103,6 +103,7 @@
     std::basic_streambuf<Elem, Tr> & sb, 
     bool no_codecvt
 ) : 
+#ifndef BOOST_NO_STD_LOCALE
     m_sb(sb),
     archive_locale(NULL),
     locale_saver(m_sb)
@@ -117,6 +118,10 @@
         m_sb.pubimbue(* archive_locale);
     }
 }
+#else
+    m_sb(sb)
+{}
+#endif
 
 // some libraries including stl and libcomo fail if the
 // buffer isn't flushed before the code_cvt facet is changed.
Modified: branches/serialization_next_release/boost/boost/archive/impl/basic_text_iarchive.ipp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/impl/basic_text_iarchive.ipp	(original)
+++ branches/serialization_next_release/boost/boost/archive/impl/basic_text_iarchive.ipp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -22,7 +22,6 @@
 #include <boost/detail/workaround.hpp>
 
 #include <boost/archive/basic_text_iarchive.hpp>
-//#include <boost/serialization/extended_type_info.hpp>
 
 namespace boost {
 namespace archive {
Modified: branches/serialization_next_release/boost/boost/archive/impl/basic_text_iprimitive.ipp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/impl/basic_text_iprimitive.ipp	(original)
+++ branches/serialization_next_release/boost/boost/archive/impl/basic_text_iprimitive.ipp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -94,7 +94,8 @@
 basic_text_iprimitive<IStream>::basic_text_iprimitive(
     IStream  &is_,
     bool no_codecvt
-) : 
+) :
+#ifndef BOOST_NO_STD_LOCALE
     is(is_),
     flags_saver(is_),
     precision_saver(is_),
@@ -112,6 +113,12 @@
     }
     is >> std::noboolalpha;
 }
+#else
+    is(is_),
+    flags_saver(is_),
+    precision_saver(is_)
+{}
+#endif
 
 template<class IStream>
 BOOST_ARCHIVE_OR_WARCHIVE_DECL(BOOST_PP_EMPTY())
Modified: branches/serialization_next_release/boost/boost/archive/impl/basic_text_oprimitive.ipp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/impl/basic_text_oprimitive.ipp	(original)
+++ branches/serialization_next_release/boost/boost/archive/impl/basic_text_oprimitive.ipp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -75,6 +75,7 @@
     OStream & os_,
     bool no_codecvt
 ) : 
+#ifndef BOOST_NO_STD_LOCALE
     os(os_),
     flags_saver(os_),
     precision_saver(os_),
@@ -92,6 +93,12 @@
     }
     os << std::noboolalpha;
 }
+#else
+    os(os_),
+    flags_saver(os_),
+    precision_saver(os_)
+{}
+#endif
 
 template<class OStream>
 BOOST_ARCHIVE_OR_WARCHIVE_DECL(BOOST_PP_EMPTY())
Modified: branches/serialization_next_release/boost/boost/archive/impl/basic_xml_iarchive.ipp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/impl/basic_xml_iarchive.ipp	(original)
+++ branches/serialization_next_release/boost/boost/archive/impl/basic_xml_iarchive.ipp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -15,7 +15,6 @@
 
 #include <boost/archive/basic_xml_iarchive.hpp>
 #include <boost/serialization/tracking.hpp>
-//#include <boost/serialization/extended_type_info.hpp>
 
 namespace boost {
 namespace archive {
Modified: branches/serialization_next_release/boost/boost/archive/shared_ptr_helper.hpp
==============================================================================
--- branches/serialization_next_release/boost/boost/archive/shared_ptr_helper.hpp	(original)
+++ branches/serialization_next_release/boost/boost/archive/shared_ptr_helper.hpp	2007-09-27 00:01:51 EDT (Thu, 27 Sep 2007)
@@ -21,6 +21,7 @@
 
 #include <boost/config.hpp>
 #include <boost/shared_ptr.hpp>
+#include <boost/serialization/type_info_implementation.hpp>
 #include <boost/serialization/shared_ptr_132.hpp>
 #include <boost/throw_exception.hpp>
 
@@ -97,10 +98,11 @@
                 )
             );
         const boost::serialization::extended_type_info * this_type
-            = boost::serialization::type_info_implementation<T>::type::get_instance();
+            = boost::serialization::type_info_implementation<T>::type::find();
         void * vp = void_downcast(*true_type, *this_type, t);
         return vp;
     }
+public:
     template<class T>
     void reset(shared_ptr<T> & s, T * r){
         if(NULL == r){