diff options
author | Anas Nashif <anas.nashif@intel.com> | 2012-10-30 12:57:26 -0700 |
---|---|---|
committer | Anas Nashif <anas.nashif@intel.com> | 2012-10-30 12:57:26 -0700 |
commit | 1a78a62555be32868418fe52f8e330c9d0f95d5a (patch) | |
tree | d3765a80e7d3b9640ec2e930743630cd6b9fce2b /tools/quickbook/src/intrusive_base.hpp | |
download | boost-1a78a62555be32868418fe52f8e330c9d0f95d5a.tar.gz boost-1a78a62555be32868418fe52f8e330c9d0f95d5a.tar.bz2 boost-1a78a62555be32868418fe52f8e330c9d0f95d5a.zip |
Imported Upstream version 1.49.0upstream/1.49.0
Diffstat (limited to 'tools/quickbook/src/intrusive_base.hpp')
-rw-r--r-- | tools/quickbook/src/intrusive_base.hpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/tools/quickbook/src/intrusive_base.hpp b/tools/quickbook/src/intrusive_base.hpp new file mode 100644 index 0000000000..702c13d0b9 --- /dev/null +++ b/tools/quickbook/src/intrusive_base.hpp @@ -0,0 +1,36 @@ +/*============================================================================= + Copyright (c) 2011 Daniel James + + 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) +=============================================================================*/ + +#if !defined(BOOST_QUICKBOOK_INTRUSIVE_BASE_HPP) +#define BOOST_QUICKBOOK_INTRUSIVE_BASE_HPP + +namespace quickbook +{ + // + // instructive_base + // + + template <typename T> + struct intrusive_base + { + intrusive_base() : ref_count_(0) {} + intrusive_base(intrusive_base const&) : ref_count_(0) {} + intrusive_base& operator=(intrusive_base const&) { return *this; } + ~intrusive_base() { assert(!ref_count_); } + + friend void intrusive_ptr_add_ref(T* ptr) + { ++ptr->ref_count_; } + + friend void intrusive_ptr_release(T* ptr) + { if(--ptr->ref_count_ == 0) delete ptr; } + private: + unsigned ref_count_; + }; +} + +#endif |