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

scim::Pointer< T > Class Template Reference
[HelperHelper]

Smart pointer template class. More...

#include <scim_pointer.h>

Collaboration diagram for scim::Pointer< T >:

Collaboration graph
[legend]
List of all members.

Public Member Functions

Constructors
 Pointer (T *object=0)
 Pointer (Pointer &src)
template<typename T1>
 Pointer (const Pointer< T1 > &src)
 ~Pointer ()
Pointeroperator= (T *object)
Pointeroperator= (const Pointer &src)
template<typename T1>
Pointeroperator= (const Pointer< T1 > &src)
Accessors
T & operator * () const
T * operator-> () const
 operator T * () const
T * get () const
bool null () const
 Returns true if the Pointer has no dumb pointer.
Methods
T * release ()
void reset (T *object=0)

Friends

template<typename T1, typename T2>
bool operator== (const Pointer< T1 > &t1, const Pointer< T2 > &t2)

Detailed Description

template<typename T>
class scim::Pointer< T >

Smart pointer template class.

Pointer is a standard auto_ptr-like smart pointer for managing heap allocated reference counted objects. T must be a class derived from scim::ReferencedObject.

Definition at line 56 of file scim_pointer.h.


Constructor & Destructor Documentation

template<typename T>
scim::Pointer< T >::Pointer T *  object = 0  )  [inline]
 

Construct a new smart pointer.

Parameters:
object - a pointer to an object allocated on the heap.

Initialize a new Pointer with any dumb pointer.

Definition at line 80 of file scim_pointer.h.

template<typename T>
scim::Pointer< T >::Pointer Pointer< T > &  src  )  [inline]
 

Copy constructor.

Parameters:
src - a reference to a smart pointer.

Initialize a new Pointer with any compatible Pointer.

Definition at line 89 of file scim_pointer.h.

template<typename T>
template<typename T1>
scim::Pointer< T >::Pointer const Pointer< T1 > &  src  )  [inline]
 

Copy constructor.

Parameters:
src - a Pointer to type T1 where T1 is derived from T.

Initialize a new Pointer of type T from a Pointer of type T1, only if T1 is derived from T.

Definition at line 99 of file scim_pointer.h.

template<typename T>
scim::Pointer< T >::~Pointer  )  [inline]
 

Destructor. Decreases the object reference count.

Definition at line 109 of file scim_pointer.h.


Member Function Documentation

template<typename T>
Pointer& scim::Pointer< T >::operator= T *  object  )  [inline]
 

Assignment operator.

Parameters:
object - a pointer to an object allocated on the heap.

Releases the current dumb pointer, if any and assigns object to this Pointer, incrementing its reference count.

Definition at line 116 of file scim_pointer.h.

template<typename T>
Pointer& scim::Pointer< T >::operator= const Pointer< T > &  src  )  [inline]
 

Assignment operator.

Parameters:
src - a reference to a smart pointer.

Releases the current dumb pointer, if any and assigns the dumb pointer managed by src to this Pointer, incrementing its reference count.

Definition at line 127 of file scim_pointer.h.

template<typename T>
template<typename T1>
Pointer& scim::Pointer< T >::operator= const Pointer< T1 > &  src  )  [inline]
 

Assignment operator.

Parameters:
src - a Pointer to type T1 where T1 is derived from T.

Releases the current dumb pointer, if any and assigns the dumb pointer of type T1 managed by src to this Pointer as a dumb pointer of type T, only if T1 is derived from T. The reference count is incremented.

Definition at line 139 of file scim_pointer.h.

template<typename T>
T& scim::Pointer< T >::operator *  )  const [inline]
 

Dereference operator.

Returns:
a reference to the object pointed to by the dumb pointer.

Definition at line 155 of file scim_pointer.h.

template<typename T>
T* scim::Pointer< T >::operator->  )  const [inline]
 

Member selection operator.

Returns:
the dumb pointer.

Definition at line 162 of file scim_pointer.h.

template<typename T>
scim::Pointer< T >::operator T *  )  const [inline]
 

Conversion operator. Converts a Pointer into its dumb pointer: the C pointer it manages. Normally it is considered pretty evil to mix smart and regular pointers. In scim you can safely if you just follow the reference counting rules for each of them. You can never call delete on Pointer either because you don't call delete on scim objects; you call unref().

Definition at line 169 of file scim_pointer.h.

template<typename T>
T* scim::Pointer< T >::get  )  const [inline]
 

Returns the dumb pointer; the regular C pointer managed by the Pointer.

Returns:
the dumb pointer.

Definition at line 180 of file scim_pointer.h.

Referenced by scim::Pointer< Slot >::operator *(), scim::Pointer< Slot >::operator T *(), scim::Pointer< Slot >::operator->(), and scim::Node::slot().

template<typename T>
bool scim::Pointer< T >::null  )  const [inline]
 

Returns true if the Pointer has no dumb pointer.

Definition at line 187 of file scim_pointer.h.

template<typename T>
T* scim::Pointer< T >::release  )  [inline]
 

Releases the dumb pointer.

Returns:
the regular C pointer previously managed by the Pointer.

Before releasing the dumb pointer its reference count is incremented to prevent it being destroyed. You must call unref() on the pointer to prevent a memory leak.

Definition at line 197 of file scim_pointer.h.

template<typename T>
void scim::Pointer< T >::reset T *  object = 0  )  [inline]
 

Sets a new dumb pointer for the Pointer to manage.

Parameters:
object - the new dumb pointer.

Releases the current dumb pointer, if any, and assigns object to the Pointer, incrementing its reference count.

Definition at line 212 of file scim_pointer.h.


Friends And Related Function Documentation

template<typename T>
template<typename T1, typename T2>
bool operator== const Pointer< T1 > &  t1,
const Pointer< T2 > &  t2
[friend]
 

Compares two Pointers.

Returns:
true if both Pointers manage to same dumb pointer.

Definition at line 229 of file scim_pointer.h.


The documentation for this class was generated from the following file:
Generated on Tue Apr 19 00:12:37 2005 for scim by  doxygen 1.4.1