Chris@16: // (C) Copyright John Maddock 2005. Chris@16: // Use, modification and distribution are subject to the Chris@16: // Boost Software License, Version 1.0. (See accompanying file Chris@16: // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: #ifndef BOOST_TR1_MEMORY_HPP_INCLUDED Chris@16: # define BOOST_TR1_MEMORY_HPP_INCLUDED Chris@16: # include Chris@16: # include Chris@16: # include Chris@16: Chris@16: #ifndef BOOST_HAS_TR1_SHARED_PTR Chris@16: Chris@16: // Chris@16: // This header can get included by boost/shared_ptr.hpp which leads Chris@16: // to cyclic dependencies, the workaround is to forward declare all Chris@16: // the boost components, and then include the actual headers afterwards. Chris@16: // This is fragile, but seems to work, and doesn't require modification Chris@16: // of boost/shared_ptr.hpp. Chris@16: // Chris@16: namespace boost{ Chris@16: Chris@16: class bad_weak_ptr; Chris@16: template class weak_ptr; Chris@16: template class shared_ptr; Chris@16: template void swap(weak_ptr & a, weak_ptr & b) BOOST_NOEXCEPT; Chris@16: template void swap(shared_ptr & a, shared_ptr & b) BOOST_NOEXCEPT; Chris@16: template shared_ptr static_pointer_cast(shared_ptr const & r) BOOST_NOEXCEPT; Chris@16: template shared_ptr dynamic_pointer_cast(shared_ptr const & r) BOOST_NOEXCEPT; Chris@16: template shared_ptr const_pointer_cast(shared_ptr const & r) BOOST_NOEXCEPT; Chris@16: template D * get_deleter(shared_ptr const & p) BOOST_NOEXCEPT; Chris@16: template class enable_shared_from_this; Chris@16: Chris@16: namespace detail{ Chris@16: class shared_count; Chris@16: class weak_count; Chris@16: } Chris@16: Chris@16: } Chris@16: Chris@16: namespace std{ namespace tr1{ Chris@16: Chris@16: using ::boost::bad_weak_ptr; Chris@16: using ::boost::shared_ptr; Chris@16: #if !BOOST_WORKAROUND(__BORLANDC__, < 0x0582) Chris@16: using ::boost::swap; Chris@16: #endif Chris@16: using ::boost::static_pointer_cast; Chris@16: using ::boost::dynamic_pointer_cast; Chris@16: using ::boost::const_pointer_cast; Chris@16: using ::boost::get_deleter; Chris@16: using ::boost::weak_ptr; Chris@16: using ::boost::enable_shared_from_this; Chris@16: Chris@16: } } Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: #else Chris@16: Chris@16: # if defined(BOOST_HAS_INCLUDE_NEXT) && !defined(BOOST_TR1_DISABLE_INCLUDE_NEXT) Chris@16: # include_next BOOST_TR1_HEADER(memory) Chris@16: # else Chris@16: # include Chris@16: # include BOOST_TR1_STD_HEADER(BOOST_TR1_PATH(memory)) Chris@16: # endif Chris@16: Chris@16: #endif Chris@16: Chris@16: #endif Chris@16: