Public Types | Public Member Functions | Protected Member Functions | Protected Attributes

Bakery::sharedptr< T_obj > Class Template Reference

A shared reference-counting smart-pointer. More...

#include <sharedptr.h>

List of all members.

Public Types

typedef size_t size_type

Public Member Functions

 sharedptr ()
 Allocate a new instance.
 sharedptr (T_obj *pobj)
 Take ownership.
 sharedptr (const sharedptr &src)
 Share ownership.
sharedptroperator= (const sharedptr &src)
 Share ownership.
virtual ~sharedptr ()
T_obj & operator* ()
 Dereferencing.
const T_obj & operator* () const
 Dereferencing.
T_obj * operator-> () const
 Dereferencing.
 operator bool () const
 Test whether the RefPtr<> points to any underlying instance.
T_obj * obj ()
 Get the underlying instance:
const T_obj * obj () const
 Get the underlying instance:

Protected Member Functions

void ref ()
void unref ()

Protected Attributes

size_typem_pRefCount
T_obj * m_pobj

Detailed Description

template<typename T_obj>
class Bakery::sharedptr< T_obj >

A shared reference-counting smart-pointer.


Member Typedef Documentation

template<typename T_obj>
typedef size_t Bakery::sharedptr< T_obj >::size_type

Constructor & Destructor Documentation

template<typename T_obj >
Bakery::sharedptr< T_obj >::sharedptr (  ) 

Allocate a new instance.

template<typename T_obj >
Bakery::sharedptr< T_obj >::sharedptr ( T_obj *  pobj  )  [explicit]

Take ownership.

References Bakery::sharedptr< T_obj >::ref().

template<typename T_obj >
Bakery::sharedptr< T_obj >::sharedptr ( const sharedptr< T_obj > &  src  ) 

Share ownership.

References Bakery::sharedptr< T_obj >::ref().

template<typename T_obj >
Bakery::sharedptr< T_obj >::~sharedptr (  )  [virtual]

Member Function Documentation

template<typename T_obj >
T_obj * Bakery::sharedptr< T_obj >::obj (  )  [inline]

Get the underlying instance:

References Bakery::sharedptr< T_obj >::m_pobj.

template<typename T_obj >
const T_obj * Bakery::sharedptr< T_obj >::obj (  )  const [inline]

Get the underlying instance:

References Bakery::sharedptr< T_obj >::m_pobj.

template<class T_obj >
Bakery::sharedptr< T_obj >::operator bool (  )  const [inline]

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

Mimics usage of ordinary pointers:

   if (ptr)
     do_something();

References Bakery::sharedptr< T_obj >::m_pobj.

template<typename T_obj >
T_obj & Bakery::sharedptr< T_obj >::operator* (  )  [inline]

Dereferencing.

References Bakery::sharedptr< T_obj >::m_pobj.

template<typename T_obj >
const T_obj & Bakery::sharedptr< T_obj >::operator* (  )  const [inline]

Dereferencing.

References Bakery::sharedptr< T_obj >::m_pobj.

template<typename T_obj >
T_obj * Bakery::sharedptr< T_obj >::operator-> (  )  const [inline]

Dereferencing.

Use the methods of the underlying instance like so:

 refptr->memberfun()

References Bakery::sharedptr< T_obj >::m_pobj.

template<typename T_obj >
sharedptr< T_obj > & Bakery::sharedptr< T_obj >::operator= ( const sharedptr< T_obj > &  src  ) 
template<class T_obj >
void Bakery::sharedptr< T_obj >::ref (  )  [inline, protected]
template<class T_obj >
void Bakery::sharedptr< T_obj >::unref (  )  [inline, protected]

Member Data Documentation

template<typename T_obj>
T_obj* Bakery::sharedptr< T_obj >::m_pobj [protected]
template<typename T_obj>
size_type* Bakery::sharedptr< T_obj >::m_pRefCount [protected]

The documentation for this class was generated from the following file: