summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '3rdParty/Boost/src/libs/serialization/src/shared_ptr_helper.cpp')
-rw-r--r--3rdParty/Boost/src/libs/serialization/src/shared_ptr_helper.cpp97
1 files changed, 11 insertions, 86 deletions
diff --git a/3rdParty/Boost/src/libs/serialization/src/shared_ptr_helper.cpp b/3rdParty/Boost/src/libs/serialization/src/shared_ptr_helper.cpp
index b155cd9..15102e2 100644
--- a/3rdParty/Boost/src/libs/serialization/src/shared_ptr_helper.cpp
+++ b/3rdParty/Boost/src/libs/serialization/src/shared_ptr_helper.cpp
@@ -1,8 +1,3 @@
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
// shared_ptr_helper.hpp: serialization for boost shared pointern
@@ -17,6 +12,7 @@
#include <list>
#include <utility>
#include <cstddef> // NULL
+#include <cassert>
#define BOOST_ARCHIVE_SOURCE
// include this to prevent linker errors when the
@@ -26,113 +22,42 @@
#include <boost/serialization/throw_exception.hpp>
#include <boost/serialization/void_cast.hpp>
#include <boost/serialization/extended_type_info.hpp>
-#include <boost/archive/shared_ptr_helper.hpp>
+#include <boost/serialization/shared_ptr_helper.hpp>
#include <boost/archive/archive_exception.hpp>
namespace boost {
-namespace archive{
-namespace detail {
+namespace serialization {
/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
// a common class for holding various types of shared pointers
-// returns pointer to object and an indicator whether this is a
-// new entry (true) or a previous one (false)
-BOOST_ARCHIVE_DECL(shared_ptr<void>)
-shared_ptr_helper::get_od(
- const void * t,
- const boost::serialization::extended_type_info * true_type,
- const boost::serialization::extended_type_info * this_type
-){
- // get void pointer to the most derived type
- // this uniquely identifies the object referred to
- const void * od = void_downcast(
- *true_type,
- *this_type,
- t
- );
- if(NULL == od)
- boost::serialization::throw_exception(
- archive_exception(
- archive_exception::unregistered_cast,
- true_type->get_debug_info(),
- this_type->get_debug_info()
- )
- );
-
- // make tracking array if necessary
- if(NULL == m_pointers)
- m_pointers = new collection_type;
-
- //shared_ptr<const void> sp(od, null_deleter());
- shared_ptr<const void> sp(od, null_deleter());
- collection_type::iterator i = m_pointers->find(sp);
-
- if(i == m_pointers->end()){
- shared_ptr<void> np;
- return np;
- }
- od = void_upcast(
- *true_type,
- *this_type,
- i->get()
- );
- if(NULL == od)
- boost::serialization::throw_exception(
- archive_exception(
- archive_exception::unregistered_cast,
- true_type->get_debug_info(),
- this_type->get_debug_info()
- )
- );
-
- return shared_ptr<void>(
- const_pointer_cast<void>(*i),
- const_cast<void *>(od)
- );
-}
-
-BOOST_ARCHIVE_DECL(void)
-shared_ptr_helper::append(const boost::shared_ptr<const void> &sp){
- // make tracking array if necessary
- if(NULL == m_pointers)
- m_pointers = new collection_type;
-
- collection_type::iterator i = m_pointers->find(sp);
-
- if(i == m_pointers->end()){
- std::pair<collection_type::iterator, bool> result;
- result = m_pointers->insert(sp);
- BOOST_ASSERT(result.second);
- }
-}
-
// #ifdef BOOST_SERIALIZATION_SHARED_PTR_132_HPP
BOOST_ARCHIVE_DECL(void)
-shared_ptr_helper::append(const boost_132::shared_ptr<const void> & t){
+shared_ptr_helper_base::append(const boost_132::shared_ptr<const void> & t){
if(NULL == m_pointers_132)
m_pointers_132 = new std::list<boost_132::shared_ptr<const void> >;
m_pointers_132->push_back(t);
}
// #endif
+
BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY())
-shared_ptr_helper::shared_ptr_helper() :
- m_pointers(NULL)
+shared_ptr_helper_base::shared_ptr_helper_base() :
+ m_o_sp(NULL)
#ifdef BOOST_SERIALIZATION_SHARED_PTR_132_HPP
, m_pointers_132(NULL)
#endif
{}
+
BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY())
-shared_ptr_helper::~shared_ptr_helper(){
- if(NULL != m_pointers)
- delete m_pointers;
+shared_ptr_helper_base::~shared_ptr_helper_base(){
+ if(NULL != m_o_sp)
+ delete m_o_sp;
#ifdef BOOST_SERIALIZATION_SHARED_PTR_132_HPP
if(NULL != m_pointers_132)
delete m_pointers_132;
#endif
}
-} // namespace detail
} // namespace serialization
} // namespace boost