/Users/eddyxu/work/quiplib/ace/srcs/Auto_Release_Ptr.h

Go to the documentation of this file.
00001 //-*- C++ -*-
00014 #ifndef QLIB_ACE_AUTO_RELEASE_PTR_H
00015 #define QLIB_ACE_AUTO_RELEASE_PTR_H
00016 
00017 namespace qlib {
00018 
00019         namespace ace {
00020 
00028                 template<typename T>
00029                         class Auto_Release_Ptr{
00030                         public:
00031                                 Auto_Release_Ptr(void) : ptr_(0) {}
00032                                 Auto_Release_Ptr(const T * ptr) : ptr_(ptr) { }
00033                                 Auto_Release_Ptr(const Auto_Release_Ptr<T> &rhs) { *this = rhs; }
00034                                 ~Auto_Release_Ptr(void) { ptr_->release(); } 
00035 
00036                                 Auto_Release_Ptr & operator= (const Auto_Release_Ptr<T> &rhs) { 
00037                                         ptr_ = rhs.ptr_;
00038                                         rhs.ptr_ = NULL;
00039                                 }
00040 
00041                                 void assign(const T * ptr) {
00042                                         if(ptr_)
00043                                                 ptr_->release();
00044 
00045                                         ptr_ = ptr;
00046                                 }
00047 
00048                                 T * get(void) const { return ptr_; }
00049                                 T * operator->() const { return ptr_; }
00050                         private:
00051                                 T * ptr_;
00052                         };
00053         }// ace
00054 } // qlib
00055 
00056 #endif /* QLIB_ACE_AUTO_RELEASE_PTR_H */
00057 
00058 

Generated on Fri Jun 8 22:49:19 2007 for qlib::ace by  doxygen 1.5.1