xref: /aosp_15_r20/external/lzma/CPP/Common/AutoPtr.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1 // Common/AutoPtr.h
2 
3 #ifndef ZIP7_INC_COMMON_AUTOPTR_H
4 #define ZIP7_INC_COMMON_AUTOPTR_H
5 
6 template<class T> class CMyUniquePtr
7 // CMyAutoPtr
8 {
9   T *_p;
10 
11   CMyUniquePtr(CMyUniquePtr<T>& p); // : _p(p.release()) {}
12   CMyUniquePtr<T>& operator=(T *p);
13   CMyUniquePtr<T>& operator=(CMyUniquePtr<T>& p);
14   /*
15   {
16     reset(p.release());
17     return (*this);
18   }
19   */
20   void reset(T* p = NULL)
21   {
22     if (p != _p)
23       delete _p;
24     _p = p;
25   }
26 public:
_p(p)27   CMyUniquePtr(T *p = NULL) : _p(p) {}
~CMyUniquePtr()28   ~CMyUniquePtr() { delete _p; }
29   T& operator*() const { return *_p; }
30   T* operator->() const { return _p; }
31   // operator bool() const { return _p != NULL; }
get()32   T* get() const { return _p; }
release()33   T* release()
34   {
35     T *tmp = _p;
36     _p = NULL;
37     return tmp;
38   }
Create_if_Empty()39   void Create_if_Empty()
40   {
41     if (!_p)
42       _p = new T;
43   }
44 };
45 
46 #endif
47