LibMusicXML 3.22
Public Member Functions | List of all members
SMARTP< T > Class Template Reference

the smart pointer implementation More...

#include <smartpointer.h>

Public Member Functions

 SMARTP ()
 an empty constructor - points to null
 
 SMARTP (T *rawptr)
 build a smart pointer from a class pointer
 
template<class T2 >
 SMARTP (const SMARTP< T2 > &ptr)
 build a smart pointer from an convertible class reference
 
 SMARTP (const SMARTP &ptr)
 build a smart pointer from another smart pointer reference
 
 ~SMARTP ()
 the smart pointer destructor: simply removes one reference count
 
 operator T* () const
 cast operator to retrieve the actual class pointer
 
Toperator* () const
 '*' operator to access the actual class pointer
 
Toperator-> () const
 operator -> overloading to access the actual class pointer
 
template<class T2 >
SMARTPoperator= (T2 p1_)
 operator = that moves the actual class pointer
 
SMARTPoperator= (T *p_)
 operator = that moves the actual class pointer
 
SMARTPoperator= (const SMARTP< T > &p_)
 operator = to support inherited class reference
 
template<class T2 >
SMARTPcast (T2 *p_)
 dynamic cast support
 
template<class T2 >
SMARTPcast (const SMARTP< T2 > &p_)
 dynamic cast support
 
bool operator< (const SMARTP< T > &p_) const
 operator < (require by VC6 for maps)
 

Detailed Description

template<class T>
class MusicXML2::SMARTP< T >
A smart pointer is in charge of maintaining the objects reference count 
by the way of pointers operators overloading. It supports class 
inheritance and conversion whenever possible.


Instances of the SMARTP class are supposed to use smartable types (or at least objects that implements the addReference and removeReference methods in a consistent way).