ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK > Class Template Reference

An ACE_Refcounted_Auto_Ptr_Rep object encapsulates a pointer to an object of type X. It uses a lock object of type ACE_LOCK to protect access to the reference count. More...

#include <Refcounted_Auto_Ptr.h>

Collaboration diagram for ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK >:

Collaboration graph
[legend]

List of all members.

Private Member Functions

X * get (void) const
 Get the pointer value.
long count (void) const
 Get the reference count value.
 ACE_Refcounted_Auto_Ptr_Rep (X *p=0)
 ~ACE_Refcounted_Auto_Ptr_Rep (void)

Static Private Member Functions

static
ACE_Refcounted_Auto_Ptr_Rep< X,
ACE_LOCK > * 
internal_create (X *p)
static
ACE_Refcounted_Auto_Ptr_Rep< X,
ACE_LOCK > * 
create (X *p)
static
ACE_Refcounted_Auto_Ptr_Rep< X,
ACE_LOCK > * 
attach (ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK > *&rep)
static void detach (ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK > *&rep)

Private Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.
ACE_Auto_Basic_Ptr< X > ptr_
 Pointer to the result.
ACE_Atomic_Op< ACE_LOCK, long > ref_count_
 Reference count.

Friends

class ACE_Refcounted_Auto_Ptr< X, ACE_LOCK >


Detailed Description

template<class X, class ACE_LOCK>
class ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK >

An ACE_Refcounted_Auto_Ptr_Rep object encapsulates a pointer to an object of type X. It uses a lock object of type ACE_LOCK to protect access to the reference count.

For internal use only.

ACE_Refcounted_Auto_Ptr_Rep is used internally by the ACE_Refcounted_Auto_Ptr class and is only accessible through it.


Constructor & Destructor Documentation

template<class X , class ACE_LOCK >
ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK >::ACE_Refcounted_Auto_Ptr_Rep ( X *  p = 0  )  [inline, private]

template<class X , class ACE_LOCK >
ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK >::~ACE_Refcounted_Auto_Ptr_Rep ( void   )  [inline, private]


Member Function Documentation

template<class X , class ACE_LOCK >
ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK > * ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK >::attach ( ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK > *&  rep  )  [inline, static, private]

Increase the reference count on rep.

Return values:
@a rep if success, 0 if there's an error obtaining the lock on rep.

template<class X , class ACE_LOCK >
long ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK >::count ( void   )  const [inline, private]

Get the reference count value.

template<class X , class ACE_LOCK >
ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK > * ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK >::create ( X *  p  )  [inline, static, private]

Create a ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK> and initialize the reference count.

template<class X , class ACE_LOCK >
void ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK >::detach ( ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK > *&  rep  )  [inline, static, private]

Decreases the reference count and and deletes rep if there are no more references to rep.

Precondition (rep != 0)

template<class X , class ACE_LOCK >
X * ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK >::get ( void   )  const [inline, private]

Get the pointer value.

template<class X , class ACE_LOCK >
ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK > * ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK >::internal_create ( X *  p  )  [inline, static, private]

Allocate a new ACE_Refcounted_Auto_Ptr_Rep<X, ACE_LOCK> instance, returning NULL if it cannot be created.


Friends And Related Function Documentation

template<class X , class ACE_LOCK >
friend class ACE_Refcounted_Auto_Ptr< X, ACE_LOCK > [friend]


Member Data Documentation

template<class X , class ACE_LOCK >
ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK >::ACE_ALLOC_HOOK_DECLARE [private]

Declare the dynamic allocation hooks.

template<class X , class ACE_LOCK >
ACE_Auto_Basic_Ptr<X> ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK >::ptr_ [private]

Pointer to the result.

template<class X , class ACE_LOCK >
ACE_Atomic_Op<ACE_LOCK, long> ACE_Refcounted_Auto_Ptr_Rep< X, ACE_LOCK >::ref_count_ [mutable, private]

Reference count.


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

Generated on Mon Jul 13 16:12:42 2009 for ACE by  doxygen 1.5.8