1#ifndef _H_intrusive_ptr_base_
2#define _H_intrusive_ptr_base_
6#include <boost/smart_ptr/intrusive_ptr.hpp>
7#include <boost/checked_delete.hpp>
8#include <boost/detail/atomic_count.hpp>
13 class intrusive_ptr_base {
22 intrusive_ptr_base(intrusive_ptr_base<T>
const &) : ref_count(0) {
27 intrusive_ptr_base &operator=(intrusive_ptr_base
const &rhs) {
33 friend void intrusive_ptr_add_ref(intrusive_ptr_base<T>
const *s) {
36 assert(s->ref_count >= 0);
42 friend void intrusive_ptr_release(intrusive_ptr_base<T>
const *s) {
45 assert(s->ref_count > 0);
47 if (--s->ref_count == 0) boost::checked_delete(
static_cast<T
const *
>(s));
50 boost::intrusive_ptr<T> self() {
return boost::intrusive_ptr<T>((T *)
this); }
52 boost::intrusive_ptr<const T> self()
const {
53 return boost::intrusive_ptr<const T>((T
const *)
this);
56 int refcount()
const {
return ref_count; }
60 mutable boost::detail::atomic_count ref_count;
Definition Accessor.hpp:12