epoc32/include/stdapis/boost/enable_shared_from_this.hpp
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
     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