Cairo::RefPtr< T_CppObject > Class Template Reference

List of all members.

Detailed Description

template<class T_CppObject>
class Cairo::RefPtr< T_CppObject >

RefPtr<> is a reference-counting shared smartpointer.

Some objects in gtkmm are obtained from a shared store. Consequently you cannot instantiate them yourself. Instead they return a RefPtr which behaves much like an ordinary pointer in that members can be reached with the usual object_ptr->member notation. Unlike most other smart pointers, RefPtr doesn't support dereferencing through *object_ptr.

Reference counting means that a shared reference count is incremented each time a RefPtr is copied, and decremented each time a RefPtr is destroyed, for instance when it leaves its scope. When the reference count reaches zero, the contained object is deleted, meaning you don't need to remember to delete the object.

RefPtr<> can store any class that has reference() and unreference() methods.


Public Member Functions

void clear ()
 Set underlying instance to 0, decrementing reference count of existing instance appropriately.
 operator bool () const
 Test whether the RefPtr<> points to any underlying instance.
bool operator!= (const RefPtr< T_CppObject > &src) const
 See operator==().
T_CppObject * operator-> () const
 Dereferencing.
template<class T_CastFrom>
RefPtr< T_CppObject > & operator= (const RefPtr< T_CastFrom > &src)
 Copy from different, but castable type).
RefPtr< T_CppObject > & operator= (const RefPtr< T_CppObject > &src)
 Copy from another RefPtr:.
bool operator== (const RefPtr< T_CppObject > &src) const
 Tests whether the RefPtr<> point to the same underlying instance.
template<class T_CastFrom>
 RefPtr (const RefPtr< T_CastFrom > &src)
 Copy constructor (from different, but castable type).
 RefPtr (const RefPtr< T_CppObject > &src)
 Copy constructor.
 RefPtr (T_CppObject *pCppObject)
 For use only by the create() methods.
 RefPtr ()
 Default constructor.
void swap (RefPtr< T_CppObject > &other)
 Swap the contents of two RefPtr<>.
 ~RefPtr ()
 Destructor - decrements reference count.

Static Public Member Functions

template<class T_CastFrom>
static RefPtr< T_CppObject > cast_const (const RefPtr< T_CastFrom > &src)
 Cast to non-const.
template<class T_CastFrom>
static RefPtr< T_CppObject > cast_dynamic (const RefPtr< T_CastFrom > &src)
 Dynamic cast to derived class.
template<class T_CastFrom>
static RefPtr< T_CppObject > cast_static (const RefPtr< T_CastFrom > &src)
 Static cast to derived class.


Constructor & Destructor Documentation

template<class T_CppObject>
Cairo::RefPtr< T_CppObject >::RefPtr (  )  [inline]

Default constructor.

Afterwards it will be null and use of -> will cause a segmentation fault.

template<class T_CppObject>
Cairo::RefPtr< T_CppObject >::~RefPtr (  )  [inline]

Destructor - decrements reference count.

template<class T_CppObject>
Cairo::RefPtr< T_CppObject >::RefPtr ( T_CppObject *  pCppObject  )  [inline, explicit]

For use only by the create() methods.

template<class T_CppObject>
Cairo::RefPtr< T_CppObject >::RefPtr ( const RefPtr< T_CppObject > &  src  )  [inline]

Copy constructor.

This increments the shared reference count.

template<class T_CppObject>
template<class T_CastFrom>
Cairo::RefPtr< T_CppObject >::RefPtr ( const RefPtr< T_CastFrom > &  src  )  [inline]

Copy constructor (from different, but castable type).

Increments the reference count.


Member Function Documentation

template<class T_CppObject>
template<class T_CastFrom>
RefPtr< T_CppObject > Cairo::RefPtr< T_CppObject >::cast_const ( const RefPtr< T_CastFrom > &  src  )  [inline, static]

Cast to non-const.

The RefPtr can't be cast with the usual notation so instead you can use

   ptr_unconst = RefPtr<UnConstType>::cast_const(ptr_const);

template<class T_CppObject>
template<class T_CastFrom>
RefPtr< T_CppObject > Cairo::RefPtr< T_CppObject >::cast_dynamic ( const RefPtr< T_CastFrom > &  src  )  [inline, static]

Dynamic cast to derived class.

The RefPtr can't be cast with the usual notation so instead you can use

   ptr_derived = RefPtr<Derived>::cast_dynamic(ptr_base);

template<class T_CppObject>
template<class T_CastFrom>
RefPtr< T_CppObject > Cairo::RefPtr< T_CppObject >::cast_static ( const RefPtr< T_CastFrom > &  src  )  [inline, static]

Static cast to derived class.

Like the dynamic cast; the notation is

   ptr_derived = RefPtr<Derived>::cast_static(ptr_base);

template<class T_CppObject>
void Cairo::RefPtr< T_CppObject >::clear (  )  [inline]

Set underlying instance to 0, decrementing reference count of existing instance appropriately.

template<class T_CppObject>
Cairo::RefPtr< T_CppObject >::operator bool (  )  const [inline]

Test whether the RefPtr<> points to any underlying instance.

Mimics usage of ordinary pointers:

   if (ptr)
     do_something();

template<class T_CppObject>
bool Cairo::RefPtr< T_CppObject >::operator!= ( const RefPtr< T_CppObject > &  src  )  const [inline]

See operator==().

template<class T_CppObject>
T_CppObject * Cairo::RefPtr< T_CppObject >::operator-> (  )  const [inline]

Dereferencing.

Use the methods of the underlying instance like so: refptr->memberfun().

template<class T_CppObject>
template<class T_CastFrom>
RefPtr< T_CppObject > & Cairo::RefPtr< T_CppObject >::operator= ( const RefPtr< T_CastFrom > &  src  )  [inline]

Copy from different, but castable type).

Increments the reference count.

template<class T_CppObject>
RefPtr< T_CppObject > & Cairo::RefPtr< T_CppObject >::operator= ( const RefPtr< T_CppObject > &  src  )  [inline]

Copy from another RefPtr:.

template<class T_CppObject>
bool Cairo::RefPtr< T_CppObject >::operator== ( const RefPtr< T_CppObject > &  src  )  const [inline]

Tests whether the RefPtr<> point to the same underlying instance.

template<class T_CppObject>
void Cairo::RefPtr< T_CppObject >::swap ( RefPtr< T_CppObject > &  other  )  [inline]

Swap the contents of two RefPtr<>.

This method swaps the internal pointers to T_CppObject. This can be done safely without involving a reference/unreference cycle and is therefore highly efficient.


The documentation for this class was generated from the following file:
Generated on Sun Jul 23 16:49:21 2006 for cairomm by  doxygen 1.4.7