#include <Ptr.h>
Public Member Functions | |
void * | address () const |
template<class C > | |
Ptr< T > & | cast (const Ptr< C > &) |
T * | get () const |
bool | isLoaded () const |
void | load () const |
boost::shared_ptr< IPtrLoader > & | loader () const |
operator bool () const | |
bool | operator! () const |
template<class C > | |
bool | operator!= (const Ptr< C > &aPtr) const |
T & | operator* () const |
T * | operator-> () const |
template<class C > | |
Ptr< T > & | operator= (const Ptr< C > &) |
Ptr< T > & | operator= (const Ptr< T > &) |
Ptr< T > & | operator= (T *) |
template<class C > | |
bool | operator== (const Ptr< C > &aPtr) const |
Ptr (const Ptr< T > &) | |
Ptr () | |
Ptr (T *anObject) | |
template<class C > | |
Ptr (const Ptr< C > &) | |
void | reset () |
boost::shared_ptr< T > & | share () const |
virtual | ~Ptr () |
Private Member Functions | |
T * | ptr (bool throw_flag) const |
Private Attributes | |
bool | m_isLoaded |
boost::shared_ptr< IPtrLoader > | m_loader |
boost::shared_ptr< T > | m_ptr |
Templated class for the persistency of associated objects. The embedded object is treated as a normal C++ pointer in the writing mode, without to require an explicit write request on it. In the reading mode, the embedded object is loaded only at access time (lazy loading).
Definition at line 148 of file Ptr.h.
: m_ptr(),m_loader(),m_isLoaded(false) {}
Definition at line 152 of file Ptr.h.
: m_ptr(anObject),m_loader(),m_isLoaded(true) {}
Definition at line 156 of file Ptr.h.
: m_ptr(aPtr.m_ptr),m_loader(aPtr.m_loader),m_isLoaded(false){ }
Definition at line 162 of file Ptr.h.
References trackerHits::c, funct::C, and matplotRender::t.
Definition at line 227 of file Ptr.h.
Referenced by ora::Ptr< T >::operator==().
{ return m_ptr.get(); }
ora::Ptr< T > & Ptr< T >::cast | ( | const Ptr< C > & | aPtr | ) | [inline] |
Definition at line 199 of file Ptr.h.
References ora::Ptr< T >::isLoaded(), ora::Ptr< T >::loader(), and ora::Ptr< T >::share().
{ m_loader = aPtr.loader(); m_ptr = boost::dynamic_pointer_cast( aPtr.share()); m_isLoaded = aPtr.isLoaded(); return *this; }
T * Ptr< T >::get | ( | void | ) | const [inline] |
bool ora::Ptr< T >::isLoaded | ( | ) | const [inline] |
Definition at line 123 of file Ptr.h.
References ora::Ptr< T >::m_isLoaded.
Referenced by ora::Ptr< T >::cast(), and ora::Ptr< T >::operator=().
{ return m_isLoaded; }
void Ptr< T >::load | ( | ) | const [inline] |
boost::shared_ptr<IPtrLoader>& ora::Ptr< T >::loader | ( | ) | const [inline] |
Definition at line 115 of file Ptr.h.
References ora::Ptr< T >::m_loader.
Referenced by ora::Ptr< T >::cast(), and ora::Ptr< T >::operator=().
{ return m_loader; }
Ptr< T >::operator bool | ( | ) | const [inline] |
bool Ptr< T >::operator! | ( | ) | const [inline] |
bool ora::Ptr< T >::operator!= | ( | const Ptr< C > & | aPtr | ) | const [inline] |
Definition at line 105 of file Ptr.h.
References ora::Ptr< T >::operator==().
{ return !(this->operator==(aPtr)); }
T & Ptr< T >::operator* | ( | ) | const [inline] |
T * Ptr< T >::operator-> | ( | ) | const [inline] |
Definition at line 180 of file Ptr.h.
References ora::Ptr< T >::m_isLoaded, ora::Ptr< T >::m_loader, and ora::Ptr< T >::m_ptr.
{ m_loader = aPtr.m_loader; m_isLoaded = aPtr.m_isLoaded; m_ptr = aPtr.m_ptr; return *this; }
Definition at line 173 of file Ptr.h.
References ora::Ptr< T >::reset().
{ m_ptr.reset(aPtr); m_isLoaded = true; return *this; }
ora::Ptr< T > & Ptr< T >::operator= | ( | const Ptr< C > & | aPtr | ) | [inline] |
Definition at line 189 of file Ptr.h.
References trackerHits::c, funct::C, ora::Ptr< T >::isLoaded(), ora::Ptr< T >::loader(), ora::Ptr< T >::share(), and matplotRender::t.
bool ora::Ptr< T >::operator== | ( | const Ptr< C > & | aPtr | ) | const [inline] |
Definition at line 101 of file Ptr.h.
References ora::Ptr< T >::address(), funct::C, and ora::Ptr< T >::m_ptr.
Referenced by ora::Ptr< T >::operator!=().
T * Ptr< T >::ptr | ( | bool | throw_flag | ) | const [inline, private] |
Definition at line 254 of file Ptr.h.
References ora::throwException().
{ if(!m_ptr.get()){ if(!m_loader.get()){ if(throwFlag) throwException("Loader is not installed.","Ptr::ptr()"); } if(!m_isLoaded && m_loader.get()){ m_ptr.reset( static_cast<T*>(m_loader->load())); m_isLoaded = true; } } if(!m_ptr.get()){ if(throwFlag) throwException("Underlying pointer is null.","Ptr::ptr()"); } return m_ptr.get(); }
void Ptr< T >::reset | ( | void | ) | [inline] |
Definition at line 242 of file Ptr.h.
Referenced by ora::Ptr< T >::operator=().
{ m_ptr.reset(); m_loader.reset(); m_isLoaded = false; }
boost::shared_ptr< T > & Ptr< T >::share | ( | ) | const [inline] |
Definition at line 222 of file Ptr.h.
Referenced by ora::Ptr< T >::cast(), and ora::Ptr< T >::operator=().
{ return m_ptr; }
bool ora::Ptr< T >::m_isLoaded [mutable, private] |
Definition at line 141 of file Ptr.h.
Referenced by ora::Ptr< T >::isLoaded(), and ora::Ptr< T >::operator=().
boost::shared_ptr<IPtrLoader> ora::Ptr< T >::m_loader [mutable, private] |
Definition at line 138 of file Ptr.h.
Referenced by ora::Ptr< T >::loader(), and ora::Ptr< T >::operator=().
Definition at line 135 of file Ptr.h.
Referenced by ora::Ptr< T >::operator=(), and ora::Ptr< T >::operator==().