True reference counting policy. More...
#include <True_RefCount_Policy.h>
Public Member Functions | |
void | add_ref (void) |
Increase the reference count on this object. | |
void | remove_ref (void) |
Decrease the reference count on this object. | |
Protected Member Functions | |
True_RefCount_Policy (void) | |
Constructor. | |
virtual | ~True_RefCount_Policy (void) |
Destructor. | |
Private Attributes | |
ACE_Atomic_Op< TAO_SYNCH_MUTEX, unsigned long > | refcount_ |
Reference counter. |
True reference counting policy.
This class is intended to be used as a "policy" argument to a host class template that requires true/functional reference counting. That class would then inherit privately from it like so:
template <class RefCountPolicy> class MyHostClass : private RefCountPolicy { public: void my_add_ref (void) { this->RefCountPolicy::add_ref (); } void my_remove_ref (void) { this->RefCountPolicy::remove_ref (); } };
and use it like so:
typedef MyHostClass<TAO::True_RefCount_Policy> MyRefCountedClass; MyRefCountedClass * p = new MyRefCountedClass; ... p->my_remove_ref ();
operator
delete()
directly on the host class object. Definition at line 71 of file True_RefCount_Policy.h.
TAO::True_RefCount_Policy::True_RefCount_Policy | ( | void | ) | [protected] |
Constructor.
Definition at line 8 of file True_RefCount_Policy.inl.
: refcount_ (1) { }
TAO::True_RefCount_Policy::~True_RefCount_Policy | ( | void | ) | [protected, virtual] |
Destructor.
remove_ref()
calls operator
delete
this
. Definition at line 16 of file True_RefCount_Policy.cpp.
{ }
void TAO::True_RefCount_Policy::add_ref | ( | void | ) |
Increase the reference count on this object.
Definition at line 14 of file True_RefCount_Policy.inl.
{ ++this->refcount_; }
void TAO::True_RefCount_Policy::remove_ref | ( | void | ) |
Decrease the reference count on this object.
Decrease the reference count on this object. Once the reference count drops to zero, call operator
delete()
on this object.
Definition at line 20 of file True_RefCount_Policy.inl.
{ const unsigned long new_count = --this->refcount_; if (new_count == 0) delete this; }
ACE_Atomic_Op<TAO_SYNCH_MUTEX, unsigned long> TAO::True_RefCount_Policy::refcount_ [private] |
Reference counter.
Definition at line 106 of file True_RefCount_Policy.h.