00001 00005 class Handle(ClassType) 00006 00007 { 00008 protected: 00009 ClassType* classptr; 00010 bool checkPtr () const; 00011 00012 public: 00013 Handle(ClassType) (); 00014 Handle(ClassType) (const ClassType& p); 00015 Handle(ClassType) (ClassType* p); 00016 Handle(ClassType) (const Handle(ClassType)& p); 00017 ~Handle(ClassType) (); 00018 00019 void rebind (const ClassType* pc); 00020 void rebind (const ClassType& p); 00021 Handle(ClassType)& detach (); 00022 00023 void operator = (const Handle(ClassType)& h); 00024 void operator = (const ClassType& p); 00025 void operator = (const ClassType* p); 00026 00027 bool ok () const; 00028 bool ok (const char* message) const; 00029 00030 const ClassType* operator -> () const; 00031 const ClassType& operator () () const; 00032 const ClassType& operator * () const; 00033 const ClassType* getPtr () const; 00034 const ClassType& getRef () const; 00035 00036 ClassType* operator -> (); 00037 ClassType& operator () (); 00038 ClassType& operator * (); 00039 ClassType* getPtr (); 00040 ClassType& getRef (); 00041 00042 ClassType** getPtrAdr (); 00043 00044 bool operator == (const Handle(ClassType)& h) const; 00045 bool operator != (const Handle(ClassType)& h) const; 00046 bool operator < (const Handle(ClassType)& h) const; 00047 bool operator > (const Handle(ClassType)& h) const; 00048 }; 00049 00050