28 {
if ( isowner )
delete ptr; ptr = 0; }
33 {
if ( isowner )
delete [] ptr; ptr = 0; }
45 inline bool operator !()
const {
return !ptr_; }
46 inline T*
set(T* p,
bool doerase=
true);
48 inline T*
release() {
return set(0,
false); }
50 inline void erase() {
set( 0, true ); }
52 inline bool setIfNull(T* p,
bool takeover);
56 typedef T* (*PointerCreator)();
57 inline T* createIfNull(PointerCreator=createSingleObject<T>);
62 typedef void (*PtrFunc)(T*);
63 inline PtrManBase(PtrFunc setfunc,PtrFunc deletor,T*);
77 inline const T*
ptr()
const {
return this->ptr_; }
78 inline operator const T*()
const {
return this->ptr_; }
79 inline const T*
operator->()
const {
return this->ptr_; }
80 inline const T&
operator*()
const {
return *this->ptr_; }
82 {
return const_cast<T*
>(this->ptr()); }
84 typedef void (*PtrFunc)(T*);
95 inline const T*
ptr()
const {
return this->ptr_; }
96 inline operator const T*()
const {
return this->ptr_; }
97 inline const T*
operator->()
const {
return this->ptr_; }
98 inline const T&
operator*()
const {
return *this->ptr_; }
99 inline T*
ptr() {
return this->ptr_; }
100 inline operator T*() {
return this->ptr_; }
101 inline T* operator ->() {
return this->ptr_; }
104 {
return const_cast<T*
>(this->ptr()); }
106 typedef void (*PtrFunc)(T*);
164 const T& operator[](
int)
const;
166 const T& operator[](
od_int64)
const;
209 { this->
set( p, true );
return *
this; }
215 void setNoDelete(
bool yn);
219 static void ref(T* p);
220 static void unRef(T* p);
221 static void unRefNoDelete(T* p);
243 void setNoDelete(
bool yn);
246 static void ref(T* p);
247 static void unRef(T* p);
248 static void unRefNoDelete(T* p);
254 template <
class T>
inline 256 : deletefunc_( deletor )
257 , setfunc_( setfunc )
263 template <
class T>
inline 269 T* oldptr =
ptr_.exchange(p);
280 template <
class T>
inline 283 if (
ptr_.setIfEqual( 0, p ) )
300 template <
class T>
inline 306 T* newptr = creator();
315 template <
class T>
inline 321 template <
class T>
inline 327 template <
class T>
inline 335 template <
class T>
inline 341 template <
class T>
inline 347 template <
class T>
inline 350 this->
set(
const_cast<T*
>( p ) );
355 template <
class T>
inline 361 template <
class T>
inline 367 template <
class T>
inline 376 template <
class T>
inline 383 return this->
ptr_[(size_t) idx];
387 template <
class T>
inline 394 return this->
ptr_[(size_t) idx];
398 template <
class T>
inline 405 return this->
ptr_[(size_t) idx];
409 template <
class T>
inline 416 return this->
ptr_[(size_t) idx];
422 template <
class T>
inline 428 template <
class T>
inline 431 this->
set(
const_cast<T*
>(p) );
436 template <
class T>
inline 442 template <
class T>
inline 451 template <
class TT>
inline 457 template <
class T>
inline 463 template <
class T>
inline 466 this->
set(
const_cast<T*
>(p.
ptr()) );
471 template <
class T>
inline 479 template <
class TT>
inline 482 this->
set( (T*) p.
ptr() );
488 template <
class T>
inline 495 template <
class T>
inline 499 template <
class T>
inline 503 template <
class T>
inline 505 { unRefNoDeletePtr((RefCount::Referenced*) p ); }
509 template <
class T>
inline 515 template <
class T>
inline 522 template <
class TT>
inline 529 template <
class TT>
inline 536 template <
class TT>
inline 539 this->
set( (T*) p.
ptr() );
544 template <
class T>
inline 547 this->
set( (T*) p.
ptr() );
552 template <
class T>
inline 555 this->
set(
const_cast<T*
>( p ) );
561 template <
class TT>
inline 564 this->
set( (T*) p.
ptr() );
569 template <
class T>
inline 576 template <
class T>
inline 580 template <
class T>
inline 584 template <
class T>
inline 586 { unRefNoDeletePtr((RefCount::Referenced*) p ); }
PtrMan(T *=0)
Definition: ptrman.h:316
const T * operator->() const
Definition: ptrman.h:97
ConstPtrMan(const T *=0)
Definition: ptrman.h:336
T * ptr()
Definition: ptrman.h:99
NonConstPtrManBase(PtrFunc setfunc, PtrFunc deletor, T *p)
Definition: ptrman.h:107
static void deleteFunc(T *p)
Definition: ptrman.h:176
static void unRefNoDelete(T *p)
Definition: ptrman.h:504
void setNoDelete(bool yn)
Definition: ptrman.h:489
#define od_int64
Definition: plftypes.h:34
static void unRef(T *p)
Definition: ptrman.h:581
PtrManBase(PtrFunc setfunc, PtrFunc deletor, T *)
Definition: ptrman.h:255
static void ref(T *p)
Definition: ptrman.h:577
ConstArrPtrMan< T > & operator=(const T *p)
Definition: ptrman.h:429
ArrPtrMan< T > & operator=(T *p)
Definition: ptrman.h:368
int64_t size_
Definition: ptrman.h:178
ConstPtrMan< T > & operator=(const T *p)
Definition: ptrman.h:348
virtual ~PtrManBase()
Definition: ptrman.h:64
T *(* PointerCreator)()
Definition: ptrman.h:56
void deleteAndZeroArrPtr(T *&ptr, bool isowner=true)
Definition: ptrman.h:32
void setNoDelete(bool yn)
Definition: ptrman.h:570
const T * ptr() const
Definition: ptrman.h:77
static void deleteFunc(T *p)
Definition: ptrman.h:128
PtrFunc deletefunc_
Definition: ptrman.h:69
bool setIfNull(T *p, bool takeover)
Definition: ptrman.h:281
ConstPtrManBase(PtrFunc setfunc, PtrFunc deletor, T *p)
Definition: ptrman.h:85
static void unRef(T *p)
Definition: ptrman.h:500
T * getNonConstPtr() const
Definition: ptrman.h:81
T * createIfNull(PointerCreator=createSingleObject< T >)
Definition: ptrman.h:301
ConstRefMan< T > & operator=(const T *p)
Definition: ptrman.h:553
static void unRefNoDelete(T *p)
Definition: ptrman.h:585
ConstArrPtrMan(const T *=0)
Definition: ptrman.h:423
ArrPtrMan(T *=0)
Definition: ptrman.h:356
Atomic instantiated with a pointer. The class really only handles the casting from a void* to a T*...
Definition: atomic.h:92
void setSize(int64_t size)
Definition: ptrman.h:169
T * createSingleObject()
Definition: ptrman.h:35
static void ref(T *p)
Definition: ptrman.h:496
void erase()
Definition: ptrman.h:50
void forceCrash(bool withdump)
const T * operator->() const
Definition: ptrman.h:79
static void deleteFunc(T *p)
Definition: ptrman.h:148
void deleteAndZeroPtr(T *&ptr, bool isowner=true)
Definition: ptrman.h:27
RefMan(const RefMan< TT > &)
Definition: ptrman.h:452
RefMan< T > & operator=(T *p)
Definition: ptrman.h:208
T * release()
Returns pointer. I won't take care of it any longer.
Definition: ptrman.h:48
T * set(T *p, bool doerase=true)
Returns old pointer if not erased.
Definition: ptrman.h:264
Point2D< T > operator*(int f, const Point2D< T > &b)
Definition: geometry.h:86
ConstRefMan(const ConstRefMan< T > &)
Definition: ptrman.h:510
#define mClass(module)
Definition: commondefs.h:161
const T & operator*() const
Definition: ptrman.h:80
T * createObjectArray(int64_t sz)
Definition: ptrman.h:36
Threads::AtomicPointer< T > ptr_
Definition: ptrman.h:66
const T & operator*() const
Definition: ptrman.h:98
const T * ptr() const
Definition: ptrman.h:95
PtrFunc setfunc_
Definition: ptrman.h:68
static void deleteFunc(T *p)
Definition: ptrman.h:194
T * getNonConstPtr() const
Definition: ptrman.h:103
PtrMan< T > & operator=(T *p)
Definition: ptrman.h:328