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"; }