ACE  6.4.2
Public Member Functions | Public Attributes | Protected Types | Protected Attributes | List of all members
ACE_Refcounted_Auto_Ptr< X, ACE_LOCK > Class Template Reference

This class implements support for a reference counted auto_ptr. Assigning or copying instances of an ACE_Refcounted_Auto_Ptr will automatically increment the reference count. When the last instance that references a ACE_Refcounted_Auto_Ptr instance is destroyed or overwritten, it will invoke delete on its underlying pointer. More...

#include <Refcounted_Auto_Ptr.h>

Collaboration diagram for ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >:
Collaboration graph
[legend]

Public Member Functions

 ACE_Refcounted_Auto_Ptr (X *p=0)
 
 ACE_Refcounted_Auto_Ptr (const ACE_Refcounted_Auto_Ptr< X, ACE_LOCK > &r)
 
virtual ~ACE_Refcounted_Auto_Ptr (void)
 
void operator= (const ACE_Refcounted_Auto_Ptr< X, ACE_LOCK > &r)
 
bool operator== (const ACE_Refcounted_Auto_Ptr< X, ACE_LOCK > &r) const
 
bool operator!= (const ACE_Refcounted_Auto_Ptr< X, ACE_LOCK > &r) const
 Inequality operator, which is the opposite of equality. More...
 
X * operator-> (void) const
 Redirection operator. More...
 
X & operator* () const
 Accessor method. More...
 
bool operator! () const
 Check rep easily. More...
 
 operator bool () const
 Check rep easily. More...
 
X * release (void)
 
void reset (X *p=0)
 
X * get (void) const
 Get the pointer value. More...
 
long count (void) const
 Get the reference count value. More...
 
bool null (void) const
 Returns true if this object does not contain a valid pointer. More...
 

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks. More...
 

Protected Types

typedef ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK > AUTO_REFCOUNTED_PTR_REP
 the ACE_Refcounted_Auto_Ptr_Rep More...
 

Protected Attributes

AUTO_REFCOUNTED_PTR_REPrep_
 Protect operations on the ACE_Refcounted_Auto_Ptr. More...
 

Detailed Description

template<class X, class ACE_LOCK>
class ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >

This class implements support for a reference counted auto_ptr. Assigning or copying instances of an ACE_Refcounted_Auto_Ptr will automatically increment the reference count. When the last instance that references a ACE_Refcounted_Auto_Ptr instance is destroyed or overwritten, it will invoke delete on its underlying pointer.

The ACE_Refcounted_Auto_Ptr works by maintaining a reference to a separate representation object, ACE_Refcounted_Auto_Ptr_Rep. That separate representation object contains the reference count and the actual pointer value.

Member Typedef Documentation

template<class X, class ACE_LOCK>
typedef ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK> ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >::AUTO_REFCOUNTED_PTR_REP
protected

Constructor & Destructor Documentation

template<class X, class ACE_LOCK >
ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >::ACE_Refcounted_Auto_Ptr ( X *  p = 0)
inlineexplicit

Constructor that initializes an ACE_Refcounted_Auto_Ptr to the specified pointer value.

template<class X, class ACE_LOCK>
ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >::ACE_Refcounted_Auto_Ptr ( const ACE_Refcounted_Auto_Ptr< X, ACE_LOCK > &  r)
inline

Copy constructor binds the new ACE_Refcounted_Auto_Ptr to the representation object referenced by r. An ACE_Refcounted_Auto_Ptr_Rep is created if necessary.

template<class X, class ACE_LOCK>
class ACE_LOCK ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >::~ACE_Refcounted_Auto_Ptr ( void  )
virtual

Destructor. Releases the reference to the underlying representation. If the release of that reference causes its reference count to reach 0, the representation object will also be destroyed.

Member Function Documentation

template<class X , class ACE_LOCK >
long ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >::count ( void  ) const
inline

Get the reference count value.

template<class X , class ACE_LOCK >
X * ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >::get ( void  ) const
inline

Get the pointer value.

template<class X , class ACE_LOCK >
bool ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >::null ( void  ) const
inline

Returns true if this object does not contain a valid pointer.

template<class X , class ACE_LOCK >
ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >::operator bool ( ) const
inline

Check rep easily.

template<class X , class ACE_LOCK >
bool ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >::operator! ( ) const
inline

Check rep easily.

template<class X, class ACE_LOCK>
bool ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >::operator!= ( const ACE_Refcounted_Auto_Ptr< X, ACE_LOCK > &  r) const
inline

Inequality operator, which is the opposite of equality.

template<class X , class ACE_LOCK >
X & ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >::operator* ( ) const
inline

Accessor method.

template<class X , class ACE_LOCK >
X * ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >::operator-> ( void  ) const
inline

Redirection operator.

template<class X, class ACE_LOCK>
void ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >::operator= ( const ACE_Refcounted_Auto_Ptr< X, ACE_LOCK > &  r)
inline

Assignment operator that binds the current object and r to the same ACE_Refcounted_Auto_Ptr_Rep. An ACE_Refcounted_Auto_Ptr_Rep is created if necessary.

template<class X, class ACE_LOCK>
bool ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >::operator== ( const ACE_Refcounted_Auto_Ptr< X, ACE_LOCK > &  r) const
inline

Equality operator that returns true if both ACE_Refcounted_Auto_Ptr objects point to the same underlying representation. It does not compare the actual pointers.

Note
It also returns true if both objects have just been instantiated and not used yet.
template<class X , class ACE_LOCK >
X * ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >::release ( void  )
inline

Releases the reference to the underlying representation object.

Return values
Thepointer value prior to releasing it.
template<class X, class ACE_LOCK >
void ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >::reset ( X *  p = 0)
inline

Releases the current pointer value and then sets a new pointer value specified by p.

Member Data Documentation

template<class X, class ACE_LOCK>
ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >::ACE_ALLOC_HOOK_DECLARE

Declare the dynamic allocation hooks.

template<class X, class ACE_LOCK>
AUTO_REFCOUNTED_PTR_REP* ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >::rep_
protected

Protect operations on the ACE_Refcounted_Auto_Ptr.


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