Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | 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->(), scim::Pointer< Slot >::operator=(), scim::Pointer< Slot >::Pointer(), 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 Thu Dec 30 21:03:23 2004 for scim by doxygen 1.3.8