|
yast2-core
|
Simple counted pointer with variable like const access. More...
#include <Rep.h>
Public Member Functions | |
| VarPtr () | |
| VarPtr (_Rep *ptr_r) | |
| _Rep * | operator-> () |
| const _Rep * | operator-> () const |
| _Rep & | operator* () |
| const _Rep & | operator* () const |
Public Member Functions inherited from BasicRepPtr | |
| operator const void * () const | |
Private Member Functions | |
| _Rep * | ptr () const |
Additional Inherited Members | |
Protected Member Functions inherited from BasicRepPtr | |
| BasicRepPtr () | |
| BasicRepPtr (Rep *ptr) | |
| BasicRepPtr (const BasicRepPtr &rhs) | |
| BasicRepPtr & | operator= (const BasicRepPtr &rhs) |
| ~BasicRepPtr () | |
| Rep * | repPtr () const |
Simple counted pointer with variable like const access.
On construction and assignment it behaves like a pointer. I.e. a 'const VarPtr<_Tp>' is a '_Tp *const'.
But accessing _Tp (via operator-> or operator*) its constness is propagated to _Tp. I.e. 'VarPtr<_Tp>' behaves like a '_Tp *' while a 'const VarPtr<_Tp>' behaves as a 'const _Tp *'.
Used in some classes to hide implementation data from the interface:
class Foo
{
class _Implementation;
VarPtr<_Implementation> _impl;
...
All a VarPtr does, is preventing accidential access to nonconst implementation data from const interface methods. If such access is intended is has to be expressed by using a cost_cast.
See makeVarPtr for convenient construction.
|
inline |
References VarPtr< _Rep >::ptr().
|
inline |
References VarPtr< _Rep >::ptr().
|
inline |
References VarPtr< _Rep >::ptr().
|
inline |
References VarPtr< _Rep >::ptr().
|
inlineprivate |
References BasicRepPtr::repPtr().
Referenced by VarPtr< _Rep >::operator*(), and VarPtr< _Rep >::operator->().
1.8.6