fpmas 1.6
ptr_wrapper.h
Go to the documentation of this file.
1#ifndef FPMAS_PTR_WRAPPER_API_H
2#define FPMAS_PTR_WRAPPER_API_H
3
8namespace fpmas { namespace api { namespace utils {
9
20 template<typename T>
21 class PtrWrapper {
22 public:
26 typedef T element_type;
30 typedef T* pointer;
31
32 protected:
36 T* ptr;
37 public:
44 : ptr(nullptr) {};
51 : ptr(ptr) {}
52
58 T* get() {
59 return ptr;
60 }
61
65 const T* get() const {
66 return ptr;
67 }
68
74 T* release() {
75 T* _ptr = this->ptr;
76 this->ptr = nullptr;
77 return _ptr;
78 }
79
86 return ptr;
87 }
88
92 const T* operator->() const {
93 return ptr;
94 }
95
103 return *ptr;
104 }
105
109 const T& operator*() const {
110 return *ptr;
111 }
112
116 operator T*() {
117 return ptr;
118 }
119
123 operator const T*() const {
124 return ptr;
125 }
126 };
127}}}
128#endif
Definition: ptr_wrapper.h:21
PtrWrapper(T *ptr)
Definition: ptr_wrapper.h:50
T * get()
Definition: ptr_wrapper.h:58
const T * get() const
Definition: ptr_wrapper.h:65
const T & operator*() const
Definition: ptr_wrapper.h:109
T & operator*()
Definition: ptr_wrapper.h:102
const T * operator->() const
Definition: ptr_wrapper.h:92
T * release()
Definition: ptr_wrapper.h:74
PtrWrapper()
Definition: ptr_wrapper.h:43
T * ptr
Definition: ptr_wrapper.h:36
T element_type
Definition: ptr_wrapper.h:26
T * pointer
Definition: ptr_wrapper.h:30
T * operator->()
Definition: ptr_wrapper.h:85
Definition: fpmas.cpp:3