34 #ifndef __EST_THANDLE_H__
35 #define __EST_THANDLE_H__
70 template<
class BoxT,
class ObjectT>
80 EST_THandle(BoxT *p) {
if ((ptr=p)) p->inc_refcount(); }
91 if (ptr && ptr->is_unreferenced())
95 bool null()
const {
return ptr == NULL; }
97 int shareing(
void)
const {
return ptr?(ptr->refcount() > 1):0; }
102 (h.ptr)->inc_refcount();
105 if (ptr && ptr->is_unreferenced())
117 t_ptr->inc_refcount();
120 if (ptr && ptr->is_unreferenced())
126 operator ObjectT *() {
127 return ptr?(ptr->object_ptr()):(ObjectT *)NULL;
130 operator const ObjectT *()
const {
131 return ptr?(ptr->object_ptr()):(
const ObjectT *)NULL;
135 int operator == (
const BoxT *p)
const {
return ptr == p; }
136 int operator != (
const BoxT *p)
const {
return !(*
this == p); }
138 const ObjectT& operator *()
const {
return *(ptr->object_ptr()); }
139 ObjectT& operator *() {
return *(ptr->object_ptr()); }
140 const ObjectT* operator ->()
const {
return (ptr->object_ptr()); }
141 ObjectT* operator ->() {
return (ptr->object_ptr()); }
144 {
return a.ptr==b.ptr; }
146 {
return !( a==b ); }
148 friend ostream & operator << (ostream &s, const EST_THandle< BoxT, ObjectT > &a)
149 {
return s <<
"HANDLE"; }