$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: pdimov_at_[hidden]
Date: 2007-08-26 16:34:42
Author: pdimov
Date: 2007-08-26 16:34:40 EDT (Sun, 26 Aug 2007)
New Revision: 38976
URL: http://svn.boost.org/trac/boost/changeset/38976
Log:
BOOST_NO_TYPEID support (#1108).
Added:
   trunk/boost/detail/sp_typeinfo.hpp   (contents, props changed)
Text files modified: 
   trunk/boost/detail/shared_count.hpp              |     3 +--                                     
   trunk/boost/detail/sp_counted_base_cw_ppc.hpp    |     4 ++--                                    
   trunk/boost/detail/sp_counted_base_cw_x86.hpp    |     4 ++--                                    
   trunk/boost/detail/sp_counted_base_gcc_ia64.hpp  |     4 ++--                                    
   trunk/boost/detail/sp_counted_base_gcc_ppc.hpp   |     4 ++--                                    
   trunk/boost/detail/sp_counted_base_gcc_sparc.hpp |     4 ++--                                    
   trunk/boost/detail/sp_counted_base_gcc_x86.hpp   |     4 ++--                                    
   trunk/boost/detail/sp_counted_base_nt.hpp        |     4 ++--                                    
   trunk/boost/detail/sp_counted_base_pt.hpp        |     4 ++--                                    
   trunk/boost/detail/sp_counted_base_solaris.hpp   |     4 ++--                                    
   trunk/boost/detail/sp_counted_base_sync.hpp      |     4 ++--                                    
   trunk/boost/detail/sp_counted_base_w32.hpp       |     4 ++--                                    
   trunk/boost/detail/sp_counted_impl.hpp           |    11 +++++------                             
   13 files changed, 28 insertions(+), 30 deletions(-)
Modified: trunk/boost/detail/shared_count.hpp
==============================================================================
--- trunk/boost/detail/shared_count.hpp	(original)
+++ trunk/boost/detail/shared_count.hpp	2007-08-26 16:34:40 EDT (Sun, 26 Aug 2007)
@@ -32,7 +32,6 @@
 #include <memory>           // std::auto_ptr
 #include <functional>       // std::less
 #include <new>              // std::bad_alloc
-#include <typeinfo>         // std::type_info in get_deleter
 
 namespace boost
 {
@@ -259,7 +258,7 @@
         return std::less<sp_counted_base *>()( a.pi_, b.pi_ );
     }
 
-    void * get_deleter(std::type_info const & ti) const
+    void * get_deleter( sp_typeinfo const & ti ) const
     {
         return pi_? pi_->get_deleter( ti ): 0;
     }
Modified: trunk/boost/detail/sp_counted_base_cw_ppc.hpp
==============================================================================
--- trunk/boost/detail/sp_counted_base_cw_ppc.hpp	(original)
+++ trunk/boost/detail/sp_counted_base_cw_ppc.hpp	2007-08-26 16:34:40 EDT (Sun, 26 Aug 2007)
@@ -24,7 +24,7 @@
 //  formulation
 //
 
-#include <typeinfo>
+#include "sp_typeinfo.hpp"
 
 namespace boost
 {
@@ -123,7 +123,7 @@
         delete this;
     }
 
-    virtual void * get_deleter( std::type_info const & ti ) = 0;
+    virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
 
     void add_ref_copy()
     {
Modified: trunk/boost/detail/sp_counted_base_cw_x86.hpp
==============================================================================
--- trunk/boost/detail/sp_counted_base_cw_x86.hpp	(original)
+++ trunk/boost/detail/sp_counted_base_cw_x86.hpp	2007-08-26 16:34:40 EDT (Sun, 26 Aug 2007)
@@ -25,7 +25,7 @@
 //  formulation
 //
 
-#include <typeinfo>
+#include "sp_typeinfo.hpp"
 
 namespace boost
 {
@@ -111,7 +111,7 @@
         delete this;
     }
 
-    virtual void * get_deleter( std::type_info const & ti ) = 0;
+    virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
 
     void add_ref_copy()
     {
Modified: trunk/boost/detail/sp_counted_base_gcc_ia64.hpp
==============================================================================
--- trunk/boost/detail/sp_counted_base_gcc_ia64.hpp	(original)
+++ trunk/boost/detail/sp_counted_base_gcc_ia64.hpp	2007-08-26 16:34:40 EDT (Sun, 26 Aug 2007)
@@ -16,7 +16,7 @@
 //  Lock-free algorithm by Alexander Terekhov
 //
 
-#include <typeinfo>
+#include "sp_typeinfo.hpp"
 
 namespace boost
 {
@@ -110,7 +110,7 @@
         delete this;
     }
 
-    virtual void * get_deleter( std::type_info const & ti ) = 0;
+    virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
 
     void add_ref_copy()
     {
Modified: trunk/boost/detail/sp_counted_base_gcc_ppc.hpp
==============================================================================
--- trunk/boost/detail/sp_counted_base_gcc_ppc.hpp	(original)
+++ trunk/boost/detail/sp_counted_base_gcc_ppc.hpp	2007-08-26 16:34:40 EDT (Sun, 26 Aug 2007)
@@ -24,7 +24,7 @@
 //  formulation
 //
 
-#include <typeinfo>
+#include "sp_typeinfo.hpp"
 
 namespace boost
 {
@@ -134,7 +134,7 @@
         delete this;
     }
 
-    virtual void * get_deleter( std::type_info const & ti ) = 0;
+    virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
 
     void add_ref_copy()
     {
Modified: trunk/boost/detail/sp_counted_base_gcc_sparc.hpp
==============================================================================
--- trunk/boost/detail/sp_counted_base_gcc_sparc.hpp	(original)
+++ trunk/boost/detail/sp_counted_base_gcc_sparc.hpp	2007-08-26 16:34:40 EDT (Sun, 26 Aug 2007)
@@ -19,7 +19,7 @@
 //
 //  Thanks to Michael van der Westhuizen
 
-#include <typeinfo>
+#include "sp_typeinfo.hpp"
 #include <inttypes.h> // int32_t
 
 namespace boost
@@ -119,7 +119,7 @@
         delete this;
     }
 
-    virtual void * get_deleter( std::type_info const & ti ) = 0;
+    virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
 
     void add_ref_copy()
     {
Modified: trunk/boost/detail/sp_counted_base_gcc_x86.hpp
==============================================================================
--- trunk/boost/detail/sp_counted_base_gcc_x86.hpp	(original)
+++ trunk/boost/detail/sp_counted_base_gcc_x86.hpp	2007-08-26 16:34:40 EDT (Sun, 26 Aug 2007)
@@ -24,7 +24,7 @@
 //  formulation
 //
 
-#include <typeinfo>
+#include "sp_typeinfo.hpp"
 
 namespace boost
 {
@@ -126,7 +126,7 @@
         delete this;
     }
 
-    virtual void * get_deleter( std::type_info const & ti ) = 0;
+    virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
 
     void add_ref_copy()
     {
Modified: trunk/boost/detail/sp_counted_base_nt.hpp
==============================================================================
--- trunk/boost/detail/sp_counted_base_nt.hpp	(original)
+++ trunk/boost/detail/sp_counted_base_nt.hpp	2007-08-26 16:34:40 EDT (Sun, 26 Aug 2007)
@@ -18,7 +18,7 @@
 // http://www.boost.org/LICENSE_1_0.txt)
 //
 
-#include <typeinfo>
+#include "sp_typeinfo.hpp"
 
 namespace boost
 {
@@ -58,7 +58,7 @@
         delete this;
     }
 
-    virtual void * get_deleter( std::type_info const & ti ) = 0;
+    virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
 
     void add_ref_copy()
     {
Modified: trunk/boost/detail/sp_counted_base_pt.hpp
==============================================================================
--- trunk/boost/detail/sp_counted_base_pt.hpp	(original)
+++ trunk/boost/detail/sp_counted_base_pt.hpp	2007-08-26 16:34:40 EDT (Sun, 26 Aug 2007)
@@ -18,7 +18,7 @@
 // http://www.boost.org/LICENSE_1_0.txt)
 //
 
-#include <typeinfo>
+#include "sp_typeinfo.hpp"
 #include <pthread.h>
 
 namespace boost
@@ -69,7 +69,7 @@
         delete this;
     }
 
-    virtual void * get_deleter( std::type_info const & ti ) = 0;
+    virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
 
     void add_ref_copy()
     {
Modified: trunk/boost/detail/sp_counted_base_solaris.hpp
==============================================================================
--- trunk/boost/detail/sp_counted_base_solaris.hpp	(original)
+++ trunk/boost/detail/sp_counted_base_solaris.hpp	2007-08-26 16:34:40 EDT (Sun, 26 Aug 2007)
@@ -20,7 +20,7 @@
 //  formulation
 //
 
-#include <typeinfo>
+#include "sp_typeinfo.hpp"
 #include <atomic.h>
 
 namespace boost
@@ -61,7 +61,7 @@
         delete this;
     }
 
-    virtual void * get_deleter( std::type_info const & ti ) = 0;
+    virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
 
     void add_ref_copy()
     {
Modified: trunk/boost/detail/sp_counted_base_sync.hpp
==============================================================================
--- trunk/boost/detail/sp_counted_base_sync.hpp	(original)
+++ trunk/boost/detail/sp_counted_base_sync.hpp	2007-08-26 16:34:40 EDT (Sun, 26 Aug 2007)
@@ -15,7 +15,7 @@
 //  See accompanying file LICENSE_1_0.txt or copy at
 //  http://www.boost.org/LICENSE_1_0.txt
 
-#include <typeinfo>
+#include "sp_typeinfo.hpp"
 #include <limits.h>
 
 namespace boost
@@ -104,7 +104,7 @@
         delete this;
     }
 
-    virtual void * get_deleter( std::type_info const & ti ) = 0;
+    virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
 
     void add_ref_copy()
     {
Modified: trunk/boost/detail/sp_counted_base_w32.hpp
==============================================================================
--- trunk/boost/detail/sp_counted_base_w32.hpp	(original)
+++ trunk/boost/detail/sp_counted_base_w32.hpp	2007-08-26 16:34:40 EDT (Sun, 26 Aug 2007)
@@ -26,7 +26,7 @@
 
 #include <boost/detail/interlocked.hpp>
 #include <boost/detail/workaround.hpp>
-#include <typeinfo>
+#include "sp_typeinfo.hpp"
 
 namespace boost
 {
@@ -66,7 +66,7 @@
         delete this;
     }
 
-    virtual void * get_deleter( std::type_info const & ti ) = 0;
+    virtual void * get_deleter( sp_typeinfo const & ti ) = 0;
 
     void add_ref_copy()
     {
Modified: trunk/boost/detail/sp_counted_impl.hpp
==============================================================================
--- trunk/boost/detail/sp_counted_impl.hpp	(original)
+++ trunk/boost/detail/sp_counted_impl.hpp	2007-08-26 16:34:40 EDT (Sun, 26 Aug 2007)
@@ -35,7 +35,6 @@
 #include <memory>           // std::allocator
 #endif
 
-#include <typeinfo>         // std::type_info in get_deleter
 #include <cstddef>          // std::size_t
 
 namespace boost
@@ -79,7 +78,7 @@
         boost::checked_delete( px_ );
     }
 
-    virtual void * get_deleter( std::type_info const & )
+    virtual void * get_deleter( detail::sp_typeinfo const & )
     {
         return 0;
     }
@@ -145,9 +144,9 @@
         del( ptr );
     }
 
-    virtual void * get_deleter( std::type_info const & ti )
+    virtual void * get_deleter( detail::sp_typeinfo const & ti )
     {
-        return ti == typeid(D)? &reinterpret_cast<char&>( del ): 0;
+        return ti == BOOST_SP_TYPEID(D)? &reinterpret_cast<char&>( del ): 0;
     }
 
 #if defined(BOOST_SP_USE_STD_ALLOCATOR)
@@ -215,9 +214,9 @@
         a2.deallocate( this, 1 );
     }
 
-    virtual void * get_deleter( std::type_info const & ti )
+    virtual void * get_deleter( detail::sp_typeinfo const & ti )
     {
-        return ti == typeid( D )? &reinterpret_cast<char&>( d_ ): 0;
+        return ti == BOOST_SP_TYPEID( D )? &reinterpret_cast<char&>( d_ ): 0;
     }
 };
 
Added: trunk/boost/detail/sp_typeinfo.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/detail/sp_typeinfo.hpp	2007-08-26 16:34:40 EDT (Sun, 26 Aug 2007)
@@ -0,0 +1,83 @@
+#ifndef BOOST_DETAIL_SP_TYPEINFO_HPP_INCLUDED
+#define BOOST_DETAIL_SP_TYPEINFO_HPP_INCLUDED
+
+// MS compatible compilers support #pragma once
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+# pragma once
+#endif
+
+//  detail/sp_typeinfo.hpp
+//
+//  Copyright 2007 Peter Dimov
+//
+// Distributed under 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)
+
+#include <boost/config.hpp>
+
+#if defined( BOOST_NO_TYPEID )
+
+namespace boost
+{
+
+namespace detail
+{
+
+typedef void* sp_typeinfo;
+
+template<class T> struct sp_typeid_
+{
+    static char v_;
+};
+
+template<class T> char sp_typeid_< T >::v_;
+
+template<class T> struct sp_typeid_< T const >: sp_typeid_< T >
+{
+};
+
+template<class T> struct sp_typeid_< T volatile >: sp_typeid_< T >
+{
+};
+
+template<class T> struct sp_typeid_< T const volatile >: sp_typeid_< T >
+{
+};
+
+} // namespace detail
+
+} // namespace boost
+
+#define BOOST_SP_TYPEID(T) (&boost::detail::sp_typeid_<T>::v_)
+
+#else
+
+#include <typeinfo>
+
+namespace boost
+{
+
+namespace detail
+{
+
+#if defined( BOOST_NO_STD_TYPEINFO )
+
+typedef ::type_info sp_typeinfo;
+
+#else
+
+typedef std::type_info sp_typeinfo;
+
+#endif
+
+} // namespace detail
+
+} // namespace boost
+
+#define BOOST_SP_TYPEID(T) typeid(T)
+
+#endif
+
+#endif  // #ifndef BOOST_DETAIL_SP_TYPEINFO_HPP_INCLUDED