PageRenderTime 18ms CodeModel.GetById 14ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 0ms

/Src/Dependencies/Boost/boost/signals2/postconstructible.hpp

http://hadesmem.googlecode.com/
C++ Header | 55 lines | 36 code | 6 blank | 13 comment | 0 complexity | f374c70321b63db5f05a0eecc5a08f9f MD5 | raw file
 1// DEPRECATED in favor of adl_postconstruct with deconstruct<T>().
 2// A simple framework for creating objects with postconstructors.
 3// The objects must inherit from boost::signals2::postconstructible, and
 4// have their lifetimes managed by
 5// boost::shared_ptr created with the boost::signals2::deconstruct_ptr()
 6// function.
 7//
 8// Copyright Frank Mori Hess 2007-2008.
 9//
10// Use, modification and
11// distribution is subject to the Boost Software License, Version
12// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
13// http://www.boost.org/LICENSE_1_0.txt)
14
15#ifndef BOOST_SIGNALS2_POSTCONSTRUCTIBLE_HPP
16#define BOOST_SIGNALS2_POSTCONSTRUCTIBLE_HPP
17
18namespace boost
19{
20  template<typename T> class shared_ptr;
21
22  namespace signals2
23  {
24    namespace postconstructible_adl_barrier
25    {
26      class postconstructible;
27    }
28    namespace detail
29    {
30      void do_postconstruct(const boost::signals2::postconstructible_adl_barrier::postconstructible *ptr);
31    } // namespace detail
32
33    namespace postconstructible_adl_barrier
34    {
35      class postconstructible
36      {
37      public:
38        friend void detail::do_postconstruct(const postconstructible *ptr);
39        template<typename T>
40          friend void adl_postconstruct(const shared_ptr<T> &sp, postconstructible *p)
41        {
42          p->postconstruct();
43        }
44      protected:
45        postconstructible() {}
46        virtual ~postconstructible() {}
47        virtual void postconstruct() = 0;
48      };
49    } // namespace postconstructible_adl_barrier
50    using postconstructible_adl_barrier::postconstructible;
51
52  }
53}
54
55#endif // BOOST_SIGNALS2_POSTCONSTRUCTIBLE_HPP