mbo::RefCntConstPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR > Class Template Reference

Reference counted const pointer. More...

#include <MboRefCntPtr.h>

Inheritance diagram for mbo::RefCntConstPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >:

Inheritance graph
{mbo::RefCntPtr\< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR \>\n|# pRep\l# mx\l|+ RefCntPtr()\l+ RefCntPtr()\l+ RefCntPtr()\l+ ~RefCntPtr()\l+ operator=()\l+ __assign()\l+ __clone()\l+ operator=()\l+ operator unspecified_bool_type()\l+ __referenceCount()\l+ __getLock()\l+ __getRep()\l+ __getRep()\l+ operator *()\l+ operator *()\l+ operator-\>()\l+ operator-\>()\l# __release()\l}{mbo::AutoFastLock\< _THREAD_MODEL, _THREAD_MODEL_PTR \>\n||}{mbo::AutoFastLock\< ThreadModel1, ThreadModel2 \>\n||}
[legend]
Collaboration diagram for mbo::RefCntConstPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >:

Collaboration graph
{mbo::RefCntPtr\< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR \>\n|# pRep\l# mx\l|+ RefCntPtr()\l+ RefCntPtr()\l+ RefCntPtr()\l+ ~RefCntPtr()\l+ operator=()\l+ __assign()\l+ __clone()\l+ operator=()\l+ operator unspecified_bool_type()\l+ __referenceCount()\l+ __getLock()\l+ __getRep()\l+ __getRep()\l+ operator *()\l+ operator *()\l+ operator-\>()\l+ operator-\>()\l# __release()\l}{mbo::AutoFastLock\< _THREAD_MODEL, _THREAD_MODEL_PTR \>\n||}{mbo::AutoFastLock\< ThreadModel1, ThreadModel2 \>\n||}{mbo::CCriticalSectionFake\n||+ Enter()\l+ Leave()\l+ GetLock()\l+ GetLevel()\l}{mbo::ICriticalSection\n||+ ~ICriticalSection()\l+ Enter()\l+ Leave()\l+ GetLock()\l+ GetLevel()\l}{mbo::RefCntRep\< _Ty, _THREAD_MODEL \>\n|+ refCnt\l+ pData\l|+ RefCntRep()\l+ AddRef()\l+ Release()\l+ Alloc()\l+ Dealloc()\l}
[legend]

List of all members.

Public Types

typedef RefCntPtr< _Ty,
_THREAD_MODEL,
_THREAD_MODEL_PTR > 
BaseRefCntPtr

Public Member Functions

 operator unspecified_bool_type () const
const RepType__getRep () const
 RefCntConstPtr ()
 RefCntConstPtr (const _Ty *p)
 RefCntConstPtr (const BaseRefCntPtr &oth)
 RefCntConstPtr (const RefCntConstPtr &oth)
RefCntConstPtroperator= (const _Ty *p)
RefCntConstPtroperator= (const BaseRefCntPtr &oth)
const _Ty & operator * () const
const _Ty * operator-> () const


Detailed Description

template<class _Ty, class _THREAD_MODEL = ThreadModel, class _THREAD_MODEL_PTR = SingleThreadedModel>
class mbo::RefCntConstPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >

Reference counted const pointer.

The class RefCntConstPtr<_Ty> describes an object that stores a const pointer to an allocated instance of type _Ty, and keeps that object's reference count. Basically this is the const version of RefCntPtr. The type is compatible with it's non const counterpart and the counterpart has a shortcut named ConstPtr for thist const version.

For this type const means that instances of this type do not allow to modify the inner pointer, however it can free the inner pointer.

See also:
RefCntPtr

Definition at line 629 of file MboRefCntPtr.h.


Member Typedef Documentation

template<class _Ty, class _THREAD_MODEL = ThreadModel, class _THREAD_MODEL_PTR = SingleThreadedModel>
typedef RefCntPtr<_Ty, _THREAD_MODEL, _THREAD_MODEL_PTR> mbo::RefCntConstPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >::BaseRefCntPtr

Definition at line 633 of file MboRefCntPtr.h.


Constructor & Destructor Documentation

template<class _Ty, class _THREAD_MODEL = ThreadModel, class _THREAD_MODEL_PTR = SingleThreadedModel>
mbo::RefCntConstPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >::RefCntConstPtr (  )  [inline]

Default constructor

The default constructor initializes the inner poitnter to 0.

Definition at line 685 of file MboRefCntPtr.h.

00689         : BaseRefCntPtr()

template<class _Ty, class _THREAD_MODEL = ThreadModel, class _THREAD_MODEL_PTR = SingleThreadedModel>
mbo::RefCntConstPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >::RefCntConstPtr ( const _Ty *  p  )  [inline]

Default constructor

The default constructor takes a pointer of the member pointer type.

Parameters:
p target pointer to be stored in the RefCntPtr.
Note:
This is an automatic conversion.

Definition at line 697 of file MboRefCntPtr.h.

00701         : BaseRefCntPtr()

template<class _Ty, class _THREAD_MODEL = ThreadModel, class _THREAD_MODEL_PTR = SingleThreadedModel>
mbo::RefCntConstPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >::RefCntConstPtr ( const BaseRefCntPtr oth  )  [inline]

Copy constructor that takes a reference

Parameters:
oth RefCntPtr to copy from

Definition at line 707 of file MboRefCntPtr.h.

00711         : BaseRefCntPtr(/*oth*/) 

template<class _Ty, class _THREAD_MODEL = ThreadModel, class _THREAD_MODEL_PTR = SingleThreadedModel>
mbo::RefCntConstPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >::RefCntConstPtr ( const RefCntConstPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR > &  oth  )  [inline]

Copy constructor that takes a reference

Parameters:
oth RefCntPtr to copy from

Definition at line 717 of file MboRefCntPtr.h.

00721         : BaseRefCntPtr(/*oth*/) 


Member Function Documentation

template<class _Ty, class _THREAD_MODEL = ThreadModel, class _THREAD_MODEL_PTR = SingleThreadedModel>
mbo::RefCntConstPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >::operator unspecified_bool_type (  )  const [inline]

Check if assigned/set

Note:
This may overwrite some behavior you expect from working with the other pointer types. However that shouldn't be the case in well designed source code.
Returns:
Whether or not target pointer is assigned (not NULL)

Reimplemented from mbo::RefCntPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >.

Definition at line 667 of file MboRefCntPtr.h.

References mbo::RefCntPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >::mx, mbo::RefCntRep< _Ty, _THREAD_MODEL >::pData, and mbo::RefCntPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >::pRep.

00670     {
00671         FastLock lock(&mx);
00672 

template<class _Ty, class _THREAD_MODEL = ThreadModel, class _THREAD_MODEL_PTR = SingleThreadedModel>
const RepType* mbo::RefCntConstPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >::__getRep (  )  const [inline]

Reimplemented from mbo::RefCntPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >.

Definition at line 676 of file MboRefCntPtr.h.

References mbo::RefCntPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >::pRep.

00680     {

template<class _Ty, class _THREAD_MODEL = ThreadModel, class _THREAD_MODEL_PTR = SingleThreadedModel>
RefCntConstPtr& mbo::RefCntConstPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >::operator= ( const _Ty *  p  )  [inline]

Assignment operator

Parameters:
p new target pointer
Returns:
modified self

Definition at line 728 of file MboRefCntPtr.h.

00732     {
00733         FastLock lock(&mx);
00734 
00735         if (!pRep || pRep->pData != p)
00736         {
00737             __release();
00738             pRep = p ? RepType::Alloc(const_cast<_Ty*>(p)) : 0;

template<class _Ty, class _THREAD_MODEL = ThreadModel, class _THREAD_MODEL_PTR = SingleThreadedModel>
RefCntConstPtr& mbo::RefCntConstPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >::operator= ( const BaseRefCntPtr oth  )  [inline]

Assignment operator

Parameters:
oth RefCntPtr to copy from
Returns:
modified self

Definition at line 745 of file MboRefCntPtr.h.

00749     {
00750         FastLock lock(&mx);
00751 
00752         if (pRep != oth.__getRep()) 
00753         {
00754             __release();
00755             pRep = const_cast<BaseRefCntPtr&>(oth).__getRep(); 
00756             if (pRep)
00757             {
00758                 pRep->AddRef();
00759             }

template<class _Ty, class _THREAD_MODEL = ThreadModel, class _THREAD_MODEL_PTR = SingleThreadedModel>
const _Ty& mbo::RefCntConstPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >::operator * (  )  const [inline]

Dereference operator (const)

Note:
Do use this with caution because you may access a null pointer here. There is no special check
Returns:
target dereferenced as const

Reimplemented from mbo::RefCntPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >.

Definition at line 768 of file MboRefCntPtr.h.

00772     { 
00773         FastLock lock(&mx);

template<class _Ty, class _THREAD_MODEL = ThreadModel, class _THREAD_MODEL_PTR = SingleThreadedModel>
const _Ty* mbo::RefCntConstPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >::operator-> (  )  const [inline]

Dereference operator (const)

Returns:
target pointer not dereferenced as const

Reimplemented from mbo::RefCntPtr< _Ty, _THREAD_MODEL, _THREAD_MODEL_PTR >.

Definition at line 779 of file MboRefCntPtr.h.

00783     { 
00784         FastLock lock(&mx);


The documentation for this class was generated from the following file:
  Hosted on code.google.com  
© Marcus Börger
Generated on Fri Jan 18 21:21:12 2008 for MBO-lib by doxygen 1.5.4