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

nvutil::RCPtr< T > Class Template Reference

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

#include <RCObject.h>

Inheritance diagram for nvutil::RCPtr< T >:

Inheritance graph
[legend]
List of all members.

Public Member Functions

 RCPtr (T *pRCObj=0)
 Construct a RCPtr object from a pointer to a RCObject.
 RCPtr (const RCPtr &rhs)
 Copy constructor.
 ~RCPtr ()
 Destructor.
RCPtr< T > & operator= (const RCPtr< T > &rhs)
 Assigning a RCPtr object.
T * operator-> ()
 Member selection operator to make this behave like a dump pointer.
const T * operator-> () const
 Constant member selection operator to make this behave like a dump pointer.
T & operator * ()
 Pointer dereference operator to make this behave like a dump pointer.
const T & operator * () const
 Constant pointer dereference operator to make this behave like a dump pointer.

Friends

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

Detailed Description

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

A smart pointer template for reference counted objects.

Offers automatic reference counting through utilizing the RCObject interface. Like a smart pointer this can be used as an ordinary built-in pointer.

Note:
T must be convertible to RCObject. The compiler will reject any attempt to instantiate a RCPtr object for types other than RCObject convertible types.


Constructor & Destructor Documentation

template<typename T>
nvutil::RCPtr< T >::RCPtr T *  pRCObj = 0  )  [inline, explicit]
 

Construct a RCPtr object from a pointer to a RCObject.

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

Copy constructor.

template<typename T>
nvutil::RCPtr< T >::~RCPtr  )  [inline]
 

Destructor.


Member Function Documentation

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

Assigning a RCPtr object.

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

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

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

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

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

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

template<typename T>
const T & nvutil::RCPtr< 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 RCPtr< 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 RCPtr 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:21:15 2005 for NVSGSDK by NVIDIA