TAO_AnyTypeCode  2.1.7
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Macros Pages
Public Member Functions | Protected Member Functions | Private Attributes
TAO::True_RefCount_Policy Class Reference

True reference counting policy. More...

#include <True_RefCount_Policy.h>

Collaboration diagram for TAO::True_RefCount_Policy:
Collaboration graph

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

ACE_Atomic_Op< TAO_SYNCH_MUTEX,
unsigned long > 
refcount_
 Reference counter.

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 delete() directly on the host class object.

Constructor & Destructor Documentation

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  )
protectedvirtual

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

void TAO::True_RefCount_Policy::add_ref ( void  )

Increase the reference count on this object.

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.


Member Data Documentation

ACE_Atomic_Op<TAO_SYNCH_MUTEX, unsigned long> TAO::True_RefCount_Policy::refcount_
private

Reference counter.


The documentation for this class was generated from the following files: