summaryrefslogtreecommitdiff
path: root/tools/quickbook/src/intrusive_base.hpp
diff options
context:
space:
mode:
authorAnas Nashif <anas.nashif@intel.com>2012-10-30 12:57:26 -0700
committerAnas Nashif <anas.nashif@intel.com>2012-10-30 12:57:26 -0700
commit1a78a62555be32868418fe52f8e330c9d0f95d5a (patch)
treed3765a80e7d3b9640ec2e930743630cd6b9fce2b /tools/quickbook/src/intrusive_base.hpp
downloadboost-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.hpp36
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