Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

nvutil::RCIPtr< T > Class Template Reference

A smart pointer template for reference counted objects. More...

#include <RCObject.h>

Collaboration diagram for nvutil::RCIPtr< T >:

Collaboration graph
[legend]
List of all members.

Public Methods

 RCIPtr (T *pObj=0)
 Construct a RCIPtr object from a pointer to an object. More...

 RCIPtr (const RCIPtr &rhs)
 Copy constructor. More...

 ~RCIPtr ()
 Destructor. More...

RCIPtr< T > & operator= (const RCIPtr< T > &rhs)
 Assigning a RCIPtr object. More...

T * operator-> ()
 Member selection operator to make this behave like a dump pointer. More...

const T * operator-> () const
 Constant member selection operator to make this behave like a dump pointer. More...

T & operator * ()
 Pointer dereference operator to make this behave like a dump pointer. More...

const T & operator * () const
 Constant pointer dereference operator to make this behave like a dump pointer. More...


Friends

template<typename U> void writeAccess (RCIPtr< U > &rcPtr)
 Initiate write access. More...


Detailed Description

template<typename T>
class nvutil::RCIPtr< T >

A smart pointer template for reference counted objects.

For objects we have no access to their sources we need an additional level of indirection because we can't make them publicly inherit from RCObject. The 'I' stands for 'indirect'.


Constructor & Destructor Documentation

template<typename T>
nvutil::RCIPtr< T >::RCIPtr T *    pObj = 0 [inline, explicit]
 

Construct a RCIPtr object from a pointer to an object.

template<typename T>
nvutil::RCIPtr< T >::RCIPtr const RCIPtr< T > &    rhs [inline]
 

Copy constructor.

template<typename T>
nvutil::RCIPtr< T >::~RCIPtr   [inline]
 

Destructor.


Member Function Documentation

template<typename T>
RCIPtr< T > & nvutil::RCIPtr< T >::operator= const RCIPtr< T > &    rhs [inline]
 

Assigning a RCIPtr object.

template<typename T>
T * nvutil::RCIPtr< T >::operator->   [inline]
 

Member selection operator to make this behave like a dump pointer.

template<typename T>
const T * nvutil::RCIPtr< T >::operator->   const [inline]
 

Constant member selection operator to make this behave like a dump pointer.

template<typename T>
T & nvutil::RCIPtr< T >::operator *   [inline]
 

Pointer dereference operator to make this behave like a dump pointer.

template<typename T>
const T & nvutil::RCIPtr< T >::operator *   const [inline]
 

Constant pointer dereference operator to make this behave like a dump pointer.


Friends And Related Function Documentation

template<typename T>
template<typename U>
void writeAccess RCIPtr< U > &    rcPtr [friend]
 

Initiate write access.

This must be called prio to modify the underlying data of the specified RCPtr object.

Remarks:
This has been introduced to manually decide wether the underlying data really gets modified by a non-const access. This helps not to clone every shared object, when a non-const access occurs but the underlying data remains untouched. With the introduction of writeAccess, full automatic seceding a shared object with a non-const access has been removed. To nevertheless maintain correctness with shared data, one have to explicitely initiate every modifying code with a call to writeAccess on the corresponding RCPtr object.
Note:
As U is used as a template parameter for RCPtr, U must be convertible to RCObject.
Parameters:
rcPtr  The RCIPtr object, for which write access should be initiated.


The documentation for this class was generated from the following file:
Generated on Tue Mar 1 13:20:46 2005 for NVSGSDK by NVIDIA