libcamgm
Public Types | Public Member Functions | Private Member Functions | Private Attributes | Related Functions | List of all members
ca_mgm::RWCOW_pointer< _D, _Traits > Struct Template Reference

#include <PtrTypes.hpp>

Public Types

typedef _Traits::_Ptr _Ptr
 
typedef _Traits::_constPtr _constPtr
 

Public Member Functions

 RWCOW_pointer (typename _Ptr::element_type *dptr=0)
 
 RWCOW_pointer (_Ptr dptr)
 
void reset ()
 
void reset (typename _Ptr::element_type *dptr)
 
void swap (RWCOW_pointer &rhs)
 
void swap (_Ptr &rhs)
 
 operator bool () const
 
const _D & operator* () const
 
const _D * operator-> () const
 
const _D * get () const
 
_D & operator* ()
 
_D * operator-> ()
 
_D * get ()
 
bool unique () const
 
long use_count () const
 
_constPtr getPtr () const
 
_Ptr getPtr ()
 
_constPtr cgetPtr ()
 

Private Member Functions

void assertUnshared ()
 

Private Attributes

_Ptr _dptr
 

Related Functions

(Note that these are not member functions.)

template<class _D >
_D * rwcowClone (const _D *rhs)
 
template<class _D , class _Ptr >
std::ostream & operator<< (std::ostream &str, const RWCOW_pointer< _D, _Ptr > &obj)
 
template<class _D , class _Ptr >
bool operator== (const RWCOW_pointer< _D, _Ptr > &lhs, const RWCOW_pointer< _D, _Ptr > &rhs)
 
template<class _D , class _Ptr >
bool operator== (const RWCOW_pointer< _D, _Ptr > &lhs, const typename _Ptr::_Ptr &rhs)
 
template<class _D , class _Ptr >
bool operator== (const typename _Ptr::_Ptr &lhs, const RWCOW_pointer< _D, _Ptr > &rhs)
 
template<class _D , class _Ptr >
bool operator== (const RWCOW_pointer< _D, _Ptr > &lhs, const typename _Ptr::_constPtr &rhs)
 
template<class _D , class _Ptr >
bool operator== (const typename _Ptr::_constPtr &lhs, const RWCOW_pointer< _D, _Ptr > &rhs)
 
template<class _D , class _Ptr >
bool operator!= (const RWCOW_pointer< _D, _Ptr > &lhs, const RWCOW_pointer< _D, _Ptr > &rhs)
 
template<class _D , class _Ptr >
bool operator!= (const RWCOW_pointer< _D, _Ptr > &lhs, const typename _Ptr::_Ptr &rhs)
 
template<class _D , class _Ptr >
bool operator!= (const typename _Ptr::_Ptr &lhs, const RWCOW_pointer< _D, _Ptr > &rhs)
 
template<class _D , class _Ptr >
bool operator!= (const RWCOW_pointer< _D, _Ptr > &lhs, const typename _Ptr::_constPtr &rhs)
 
template<class _D , class _Ptr >
bool operator!= (const typename _Ptr::_constPtr &lhs, const RWCOW_pointer< _D, _Ptr > &rhs)
 

Detailed Description

template<class _D, class _Traits = rw_pointer::Shared<_D>>
struct ca_mgm::RWCOW_pointer< _D, _Traits >

RW_pointer supporting 'copy on write' functionality.

Write access to the underlying object creates a copy, iff the object is shared.

See RW_pointer.

Member Typedef Documentation

template<class _D, class _Traits = rw_pointer::Shared<_D>>
typedef _Traits::_constPtr ca_mgm::RWCOW_pointer< _D, _Traits >::_constPtr
template<class _D, class _Traits = rw_pointer::Shared<_D>>
typedef _Traits::_Ptr ca_mgm::RWCOW_pointer< _D, _Traits >::_Ptr

Constructor & Destructor Documentation

template<class _D, class _Traits = rw_pointer::Shared<_D>>
ca_mgm::RWCOW_pointer< _D, _Traits >::RWCOW_pointer ( typename _Ptr::element_type *  dptr = 0)
inlineexplicit
template<class _D, class _Traits = rw_pointer::Shared<_D>>
ca_mgm::RWCOW_pointer< _D, _Traits >::RWCOW_pointer ( _Ptr  dptr)
inlineexplicit

Member Function Documentation

template<class _D, class _Traits = rw_pointer::Shared<_D>>
void ca_mgm::RWCOW_pointer< _D, _Traits >::assertUnshared ( )
inlineprivate
template<class _D, class _Traits = rw_pointer::Shared<_D>>
_constPtr ca_mgm::RWCOW_pointer< _D, _Traits >::cgetPtr ( )
inline
template<class _D, class _Traits = rw_pointer::Shared<_D>>
const _D* ca_mgm::RWCOW_pointer< _D, _Traits >::get ( ) const
inline
template<class _D, class _Traits = rw_pointer::Shared<_D>>
_D* ca_mgm::RWCOW_pointer< _D, _Traits >::get ( )
inline
template<class _D, class _Traits = rw_pointer::Shared<_D>>
_constPtr ca_mgm::RWCOW_pointer< _D, _Traits >::getPtr ( ) const
inline
template<class _D, class _Traits = rw_pointer::Shared<_D>>
_Ptr ca_mgm::RWCOW_pointer< _D, _Traits >::getPtr ( )
inline
template<class _D, class _Traits = rw_pointer::Shared<_D>>
ca_mgm::RWCOW_pointer< _D, _Traits >::operator bool ( ) const
inlineexplicit
template<class _D, class _Traits = rw_pointer::Shared<_D>>
const _D& ca_mgm::RWCOW_pointer< _D, _Traits >::operator* ( ) const
inline
template<class _D, class _Traits = rw_pointer::Shared<_D>>
_D& ca_mgm::RWCOW_pointer< _D, _Traits >::operator* ( )
inline
template<class _D, class _Traits = rw_pointer::Shared<_D>>
const _D* ca_mgm::RWCOW_pointer< _D, _Traits >::operator-> ( ) const
inline
template<class _D, class _Traits = rw_pointer::Shared<_D>>
_D* ca_mgm::RWCOW_pointer< _D, _Traits >::operator-> ( )
inline
template<class _D, class _Traits = rw_pointer::Shared<_D>>
void ca_mgm::RWCOW_pointer< _D, _Traits >::reset ( )
inline
template<class _D, class _Traits = rw_pointer::Shared<_D>>
void ca_mgm::RWCOW_pointer< _D, _Traits >::reset ( typename _Ptr::element_type *  dptr)
inline
template<class _D, class _Traits = rw_pointer::Shared<_D>>
void ca_mgm::RWCOW_pointer< _D, _Traits >::swap ( RWCOW_pointer< _D, _Traits > &  rhs)
inline
template<class _D, class _Traits = rw_pointer::Shared<_D>>
void ca_mgm::RWCOW_pointer< _D, _Traits >::swap ( _Ptr rhs)
inline
template<class _D, class _Traits = rw_pointer::Shared<_D>>
bool ca_mgm::RWCOW_pointer< _D, _Traits >::unique ( ) const
inline
template<class _D, class _Traits = rw_pointer::Shared<_D>>
long ca_mgm::RWCOW_pointer< _D, _Traits >::use_count ( ) const
inline

Member Data Documentation

template<class _D, class _Traits = rw_pointer::Shared<_D>>
_Ptr ca_mgm::RWCOW_pointer< _D, _Traits >::_dptr
private

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