You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
55 lines
1.6 KiB
55 lines
1.6 KiB
// DEPRECATED in favor of adl_postconstruct with deconstruct<T>(). |
|
// A simple framework for creating objects with postconstructors. |
|
// The objects must inherit from boost::signals2::postconstructible, and |
|
// have their lifetimes managed by |
|
// boost::shared_ptr created with the boost::signals2::deconstruct_ptr() |
|
// function. |
|
// |
|
// Copyright Frank Mori Hess 2007-2008. |
|
// |
|
// Use, modification and |
|
// distribution is subject to the Boost Software License, Version |
|
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at |
|
// http://www.boost.org/LICENSE_1_0.txt) |
|
|
|
#ifndef BOOST_SIGNALS2_POSTCONSTRUCTIBLE_HPP |
|
#define BOOST_SIGNALS2_POSTCONSTRUCTIBLE_HPP |
|
|
|
namespace boost |
|
{ |
|
template<typename T> class shared_ptr; |
|
|
|
namespace signals2 |
|
{ |
|
namespace postconstructible_adl_barrier |
|
{ |
|
class postconstructible; |
|
} |
|
namespace detail |
|
{ |
|
void do_postconstruct(const boost::signals2::postconstructible_adl_barrier::postconstructible *ptr); |
|
} // namespace detail |
|
|
|
namespace postconstructible_adl_barrier |
|
{ |
|
class postconstructible |
|
{ |
|
public: |
|
friend void detail::do_postconstruct(const postconstructible *ptr); |
|
template<typename T> |
|
friend void adl_postconstruct(const shared_ptr<T> &sp, postconstructible *p) |
|
{ |
|
p->postconstruct(); |
|
} |
|
protected: |
|
postconstructible() {} |
|
virtual ~postconstructible() {} |
|
virtual void postconstruct() = 0; |
|
}; |
|
} // namespace postconstructible_adl_barrier |
|
using postconstructible_adl_barrier::postconstructible; |
|
|
|
} |
|
} |
|
|
|
#endif // BOOST_SIGNALS2_POSTCONSTRUCTIBLE_HPP
|
|
|