From c2e64902202994a6e537d88fa8f2536db82d47b7 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Mon, 16 Apr 2001 22:36:28 +0000 Subject: [PATCH] installed --- src/libCom/cppStd/epics_auto_ptr.h | 74 ++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/libCom/cppStd/epics_auto_ptr.h diff --git a/src/libCom/cppStd/epics_auto_ptr.h b/src/libCom/cppStd/epics_auto_ptr.h new file mode 100644 index 000000000..1a7099aa8 --- /dev/null +++ b/src/libCom/cppStd/epics_auto_ptr.h @@ -0,0 +1,74 @@ +// epics_auto_ptr.h +// Author: Jeff Hill +// Date: March 2001 + +#ifndef epics_auto_ptrh +#define epics_auto_ptrh + +template < class T > +class epics_auto_ptr { +public: + typedef T element_type; + explicit epics_auto_ptr ( T *p = 0 ); + epics_auto_ptr ( const epics_auto_ptr & rhs ); + ~epics_auto_ptr(); + epics_auto_ptr & operator = ( const epics_auto_ptr & rhs ); + T & operator * () const; + T * operator -> () const; + T* get () const; + T* release (); +private: + T *p; +}; + +template < class T > +inline epics_auto_ptr::epics_auto_ptr ( T *pIn ) : +p ( pIn ) {} + +template < class T > +inline epics_auto_ptr::epics_auto_ptr ( const epics_auto_ptr & ap ) : +p ( ap.release() ) {} + +template < class T > +inline epics_auto_ptr::~epics_auto_ptr () +{ + delete this->p; +} + +template < class T > +inline epics_auto_ptr & epics_auto_ptr::operator = ( const epics_auto_ptr & rhs ) +{ + if ( &rhs != this) { + delete this->p; + this->p = rhs.release(); + } + return *this; +} + +template < class T > +inline T & epics_auto_ptr::operator * () const +{ + return * this->p; +} + +template < class T > +inline T * epics_auto_ptr::operator -> () const +{ + return this->p; +} + +template < class T > +inline T * epics_auto_ptr::get() const +{ + return this->p; +} + +template < class T > +inline T * epics_auto_ptr::release () +{ + T *pTmp = this->p; + this->p = 0; + return pTmp; +} + +#endif // ifndef epics_auto_ptrh