ossrv_pub/boost_apis/boost/enable_shared_from_this.hpp
changeset 0 e4d67989cc36
equal deleted inserted replaced
-1:000000000000 0:e4d67989cc36
       
     1 #ifndef BOOST_ENABLE_SHARED_FROM_THIS_HPP_INCLUDED
       
     2 #define BOOST_ENABLE_SHARED_FROM_THIS_HPP_INCLUDED
       
     3 
       
     4 //
       
     5 //  enable_shared_from_this.hpp
       
     6 //
       
     7 //  Copyright (c) 2002 Peter Dimov
       
     8 //
       
     9 // Distributed under the Boost Software License, Version 1.0. (See
       
    10 // accompanying file LICENSE_1_0.txt or copy at
       
    11 // http://www.boost.org/LICENSE_1_0.txt)
       
    12 //
       
    13 //  http://www.boost.org/libs/smart_ptr/enable_shared_from_this.html
       
    14 //
       
    15 
       
    16 #include <boost/weak_ptr.hpp>
       
    17 #include <boost/shared_ptr.hpp>
       
    18 #include <boost/assert.hpp>
       
    19 #include <boost/config.hpp>
       
    20 
       
    21 namespace boost
       
    22 {
       
    23 
       
    24 template<class T> class enable_shared_from_this
       
    25 {
       
    26 protected:
       
    27 
       
    28     enable_shared_from_this()
       
    29     {
       
    30     }
       
    31 
       
    32     enable_shared_from_this(enable_shared_from_this const &)
       
    33     {
       
    34     }
       
    35 
       
    36     enable_shared_from_this & operator=(enable_shared_from_this const &)
       
    37     {
       
    38         return *this;
       
    39     }
       
    40 
       
    41     ~enable_shared_from_this()
       
    42     {
       
    43     }
       
    44 
       
    45 public:
       
    46 
       
    47     shared_ptr<T> shared_from_this()
       
    48     {
       
    49         shared_ptr<T> p(_internal_weak_this);
       
    50         BOOST_ASSERT(p.get() == this);
       
    51         return p;
       
    52     }
       
    53 
       
    54     shared_ptr<T const> shared_from_this() const
       
    55     {
       
    56         shared_ptr<T const> p(_internal_weak_this);
       
    57         BOOST_ASSERT(p.get() == this);
       
    58         return p;
       
    59     }
       
    60 
       
    61 //  Note: No, you don't need to initialize _internal_weak_this
       
    62 //
       
    63 //  Please read the documentation, not the code
       
    64 //
       
    65 //  http://www.boost.org/libs/smart_ptr/enable_shared_from_this.html
       
    66 
       
    67     typedef T _internal_element_type; // for bcc 5.5.1
       
    68     mutable weak_ptr<_internal_element_type> _internal_weak_this;
       
    69 };
       
    70 
       
    71 } // namespace boost
       
    72 
       
    73 #endif  // #ifndef BOOST_ENABLE_SHARED_FROM_THIS_HPP_INCLUDED