36 ptr_counter(X* p = 0,
unsigned c = 1) : ptr(p), count(c) {}
50 if (p) itsCounter =
new counter(p);
59 acquire<Y>(r.itsCounter);
69 acquire<Y>(r.itsCounter);
74 X& operator*()
const {
return *itsCounter->ptr;}
75 X* operator->()
const {
return itsCounter->ptr;}
76 X*
get()
const {
return itsCounter ? itsCounter->ptr : 0;}
78 return (itsCounter ? itsCounter->count == 1 :
true);
88 (void)static_cast<X*>(c->ptr);
89 itsCounter =
reinterpret_cast<counter*
>(c);
99 if (--itsCounter->count == 0) {
100 delete itsCounter->ptr;
110 #endif // COUNTED_PTR_H