Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

TAO::True_RefCount_Policy Class Reference

True reference counting policy. More...

#include <True_RefCount_Policy.h>

List of all members.

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

TAO_SYNCH_MUTEX lock_
 Lock used to synchronize reference count.
unsigned int refcount_
 Reference count.


Detailed Description

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 ();

Note:
Ideally, the host class should declare a protected destructor to enforce proper memory management through the reference counting mechanism, i.e. to prevent clients from calling operator @c delete() directly on the host class object.


Constructor & Destructor Documentation

ACE_INLINE TAO::True_RefCount_Policy::True_RefCount_Policy void   )  [protected]
 

Constructor.

Note:
This constructor is protected since it not meant to be instantiated/used as a standalone object.

TAO::True_RefCount_Policy::~True_RefCount_Policy void   )  [protected, virtual]
 

Destructor.

Note:
The destructor must be virtual to ensure that subclass destructors are called when the reference count drops to zero, i.e. when remove_ref() calls operator delete this.


Member Function Documentation

ACE_INLINE void TAO::True_RefCount_Policy::add_ref void   ) 
 

Increase the reference count on this object.

ACE_INLINE 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 @c delete() on this object.


Member Data Documentation

TAO_SYNCH_MUTEX TAO::True_RefCount_Policy::lock_ [private]
 

Lock used to synchronize reference count.

unsigned int TAO::True_RefCount_Policy::refcount_ [private]
 

Reference count.


The documentation for this class was generated from the following files:
Generated on Thu Jun 9 00:19:23 2005 for TAO by  doxygen 1.3.9.1