23 #if !defined(__SUIT_SMARTPTR_H)
24 #define __SUIT_SMARTPTR_H
48 if ( crefs > 0 && --crefs == 0 )
65 template<
class Y>
SmartPtr( Y* y_ ) {
p =
dynamic_cast<T*
>( y_ );
if (
p )
p->upcount(); }
80 operator T*()
const {
return p; }
81 T*
get()
const {
return p; }
86 if (
this == &y_)
return *
this;
92 if (
this == &t_)
return *
this;
126 #define SMART( C ) SmartPtr<C>
130 return SMART(T1)(t.get());
#define SUIT_EXPORT
Definition: SUIT.h:36
SmartPtr< T1 > downcast(SmartPtr< T2 > &t)
casting class T2 to class T1
Definition: SUIT_SmartPtr.h:128
#define SMART(C)
Definition: SUIT_SmartPtr.h:126
Base counter class what children using in SmartPtr class how template.
Definition: SUIT_SmartPtr.h:29
void upcount()
increments reference counter
Definition: SUIT_SmartPtr.h:41
void downcount()
decrements reference counter
Definition: SUIT_SmartPtr.h:46
unsigned long crefs
reference counter
Definition: SUIT_SmartPtr.h:56
RefCount(const RefCount &)
copy constructor
Definition: SUIT_SmartPtr.h:34
virtual ~RefCount()
destructor
Definition: SUIT_SmartPtr.h:36
int refcount() const
get reference counter value
Definition: SUIT_SmartPtr.h:53
RefCount()
constructor
Definition: SUIT_SmartPtr.h:32
RefCount & operator=(const RefCount &)
operator= (does not change counter)
Definition: SUIT_SmartPtr.h:38
Template class that provides automatic casting for hold RefCount based objects.
Definition: SUIT_SmartPtr.h:60
void nullify()
nullify
Definition: SUIT_SmartPtr.h:115
bool isNull() const
check for null
Definition: SUIT_SmartPtr.h:117
SmartPtr(const SmartPtr< Y > &y_)
copy constructor from any RefCount-based class
Definition: SUIT_SmartPtr.h:67
SmartPtr & operator=(T *p_)
Definition: SUIT_SmartPtr.h:96
SmartPtr()
default constructor
Definition: SUIT_SmartPtr.h:63
SmartPtr(const SmartPtr &t_)
copy constructor
Definition: SUIT_SmartPtr.h:69
int operator!=(T *p_)
comparing
Definition: SUIT_SmartPtr.h:111
virtual ~SmartPtr(void)
destructor
Definition: SUIT_SmartPtr.h:71
SmartPtr & operator=(const SmartPtr< Y > &y_)
assignment
Definition: SUIT_SmartPtr.h:84
SmartPtr(Y *y_)
constructor from any RefCount-based class
Definition: SUIT_SmartPtr.h:65
T * p
stored pointer
Definition: SUIT_SmartPtr.h:120
T & operator*() const
return *pointer
Definition: SUIT_SmartPtr.h:78
int operator==(const T *p_)
comparing
Definition: SUIT_SmartPtr.h:108
friend int operator==(const T *p_, const SmartPtr &t_)
comparing
Definition: SUIT_SmartPtr.h:109
T * operator->() const
return pointer
Definition: SUIT_SmartPtr.h:79
int operator!=(SmartPtr &t_)
comparing
Definition: SUIT_SmartPtr.h:110
friend int operator!=(T *p_, SmartPtr &t_)
comparing
Definition: SUIT_SmartPtr.h:112
SmartPtr & operator=(const SmartPtr &t_)
assignment
Definition: SUIT_SmartPtr.h:90
T * get() const
return pointer
Definition: SUIT_SmartPtr.h:81
int operator==(const SmartPtr &t_)
comparing
Definition: SUIT_SmartPtr.h:107