34 #ifndef __EST_THANDLE_H__
35 #define __EST_THANDLE_H__
71 template<
class BoxT,
class ObjectT>
81 EST_THandle(BoxT *p) {
if ((ptr=p)) p->inc_refcount(); }
92 if (ptr && ptr->is_unreferenced())
96 bool null()
const {
return ptr == NULL; }
98 int shareing(
void)
const {
return ptr?(ptr->refcount() > 1):0; }
103 (h.ptr)->inc_refcount();
106 if (ptr && ptr->is_unreferenced())
118 t_ptr->inc_refcount();
121 if (ptr && ptr->is_unreferenced())
127 operator ObjectT *() {
128 return ptr?(ptr->object_ptr()):(ObjectT *)NULL;
131 operator const ObjectT *()
const {
132 return ptr?(ptr->object_ptr()):(
const ObjectT *)NULL;
136 int operator == (
const BoxT *p)
const {
return ptr == p; }
137 int operator != (
const BoxT *p)
const {
return !(*
this == p); }
139 const ObjectT& operator *()
const {
return *(ptr->object_ptr()); }
140 ObjectT& operator *() {
return *(ptr->object_ptr()); }
141 const ObjectT* operator ->()
const {
return (ptr->object_ptr()); }
142 ObjectT* operator ->() {
return (ptr->object_ptr()); }
145 {
return a.ptr==b.ptr; }
147 {
return !( a==b ); }
149 friend ostream & operator << (ostream &s, const EST_THandle< BoxT, ObjectT > &a)
150 {
return s <<
"HANDLE"; }