ACE  6.2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Public Attributes | Protected Types | Static Protected Member Functions | Protected Attributes | List of all members
ACE_Intrusive_Auto_Ptr< X > Class Template Reference

This class implements support for a reference counted auto_ptr. It assumes reference counting abilities of the parameterizing class. More...

#include <Intrusive_Auto_Ptr.h>

Collaboration diagram for ACE_Intrusive_Auto_Ptr< X >:
Collaboration graph
[legend]

Public Member Functions

 operator unspecified_bool_type () const
 Enables "if (sp) ...". More...
 
 ACE_Intrusive_Auto_Ptr (X *p=0, bool addref=true)
 
 ACE_Intrusive_Auto_Ptr (const ACE_Intrusive_Auto_Ptr< X > &r)
 
template<class U >
 ACE_Intrusive_Auto_Ptr (const ACE_Intrusive_Auto_Ptr< U > &rhs)
 
virtual ~ACE_Intrusive_Auto_Ptr (void)
 
void operator= (const ACE_Intrusive_Auto_Ptr< X > &r)
 
X * operator-> (void) const
 Redirection operator. More...
 
X & operator* () const
 Accessor method. 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...
 

Public Attributes

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

Protected Types

typedef void(* unspecified_bool_type )(ACE_Intrusive_Auto_Ptr< X > ***)
 

Static Protected Member Functions

static void unspecified_bool (ACE_Intrusive_Auto_Ptr< X > ***)
 Used to define a proper boolean conversion for "if (sp) ...". More...
 

Protected Attributes

X * rep_
 Protect operations on the ACE_Intrusive_Auto_Ptr. More...
 

Detailed Description

template<class X>
class ACE_Intrusive_Auto_Ptr< X >

This class implements support for a reference counted auto_ptr. It assumes reference counting abilities of the parameterizing class.

Assigning or copying instances of an ACE_Intrusive_Auto_Ptr will automatically increment the reference count. When the last instance that references a ACE_Intrusive_Auto_Ptr instance is destroyed or overwritten, it will invoke delete on its underlying pointer.

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

Member Typedef Documentation

template<class X>
typedef void(* ACE_Intrusive_Auto_Ptr< X >::unspecified_bool_type)(ACE_Intrusive_Auto_Ptr< X > ***)
protected

Constructor & Destructor Documentation

template<class X>
ACE_Intrusive_Auto_Ptr< X >::ACE_Intrusive_Auto_Ptr ( X *  p = 0,
bool  addref = true 
)
inline

Constructor that initializes an ACE_Intrusive_Auto_Ptr to the specified pointer value.

template<class X>
ACE_Intrusive_Auto_Ptr< X >::ACE_Intrusive_Auto_Ptr ( const ACE_Intrusive_Auto_Ptr< X > &  r)
inline

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

template<class X >
template<class U >
ACE_Intrusive_Auto_Ptr< X >::ACE_Intrusive_Auto_Ptr ( const ACE_Intrusive_Auto_Ptr< U > &  rhs)
inline
template<class X >
ACE_Intrusive_Auto_Ptr< X >::~ACE_Intrusive_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>
long ACE_Intrusive_Auto_Ptr< X >::count ( void  ) const

Get the reference count value.

template<class X >
X * ACE_Intrusive_Auto_Ptr< X >::get ( void  ) const
inline

Get the pointer value.

template<class X>
ACE_Intrusive_Auto_Ptr< X >::operator unspecified_bool_type ( ) const
inline

Enables "if (sp) ...".

template<class X >
X & ACE_Intrusive_Auto_Ptr< X >::operator* ( ) const
inline

Accessor method.

template<class X >
X * ACE_Intrusive_Auto_Ptr< X >::operator-> ( void  ) const
inline

Redirection operator.

template<class X>
void ACE_Intrusive_Auto_Ptr< X >::operator= ( const ACE_Intrusive_Auto_Ptr< X > &  r)
inline

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

template<class X >
X * ACE_Intrusive_Auto_Ptr< X >::release ( void  )
inline

Releases the reference to the underlying representation object.

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

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

template<class X>
static void ACE_Intrusive_Auto_Ptr< X >::unspecified_bool ( ACE_Intrusive_Auto_Ptr< X > ***  )
inlinestaticprotected

Used to define a proper boolean conversion for "if (sp) ...".

Member Data Documentation

template<class X>
ACE_Intrusive_Auto_Ptr< X >::ACE_ALLOC_HOOK_DECLARE

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

Declare the dynamic allocation hooks.

template<class X>
X* ACE_Intrusive_Auto_Ptr< X >::rep_
protected

Protect operations on the ACE_Intrusive_Auto_Ptr.


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