1baa3858d3f5d128a5c8466b700098109edcad5f2repo sync// Common/AutoPtr.h 2baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 3baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#ifndef __COMMON_AUTOPTR_H 4baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define __COMMON_AUTOPTR_H 5baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 6baa3858d3f5d128a5c8466b700098109edcad5f2repo synctemplate<class T> class CMyAutoPtr 7baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{ 8baa3858d3f5d128a5c8466b700098109edcad5f2repo sync T *_p; 9baa3858d3f5d128a5c8466b700098109edcad5f2repo syncpublic: 10baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CMyAutoPtr(T *p = 0) : _p(p) {} 11baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CMyAutoPtr(CMyAutoPtr<T>& p): _p(p.release()) {} 12baa3858d3f5d128a5c8466b700098109edcad5f2repo sync CMyAutoPtr<T>& operator=(CMyAutoPtr<T>& p) 13baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 14baa3858d3f5d128a5c8466b700098109edcad5f2repo sync reset(p.release()); 15baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return (*this); 16baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 17baa3858d3f5d128a5c8466b700098109edcad5f2repo sync ~CMyAutoPtr() { delete _p; } 18baa3858d3f5d128a5c8466b700098109edcad5f2repo sync T& operator*() const { return *_p; } 19baa3858d3f5d128a5c8466b700098109edcad5f2repo sync // T* operator->() const { return (&**this); } 20baa3858d3f5d128a5c8466b700098109edcad5f2repo sync T* get() const { return _p; } 21baa3858d3f5d128a5c8466b700098109edcad5f2repo sync T* release() 22baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 23baa3858d3f5d128a5c8466b700098109edcad5f2repo sync T *tmp = _p; 24baa3858d3f5d128a5c8466b700098109edcad5f2repo sync _p = 0; 25baa3858d3f5d128a5c8466b700098109edcad5f2repo sync return tmp; 26baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 27baa3858d3f5d128a5c8466b700098109edcad5f2repo sync void reset(T* p = 0) 28baa3858d3f5d128a5c8466b700098109edcad5f2repo sync { 29baa3858d3f5d128a5c8466b700098109edcad5f2repo sync if (p != _p) 30baa3858d3f5d128a5c8466b700098109edcad5f2repo sync delete _p; 31baa3858d3f5d128a5c8466b700098109edcad5f2repo sync _p = p; 32baa3858d3f5d128a5c8466b700098109edcad5f2repo sync } 33baa3858d3f5d128a5c8466b700098109edcad5f2repo sync}; 34baa3858d3f5d128a5c8466b700098109edcad5f2repo sync 35baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#endif 36