EHS
Loading...
Searching...
No Matches
ShdPtr.h
Go to the documentation of this file.
1#pragma once
2
3#include "PtrData.h"
4
5namespace ehs
6{
7 template<typename T>
8 class ShdPtr
9 {
10 private:
11 T* data;
12
13 public:
15 {
16 if (RemovePtrData(data))
17 delete data;
18 }
19
21 : data(nullptr)
22 {
23 }
24
25 ShdPtr(T* data)
26 : data(data)
27 {
28 AddPtrData(data);
29 }
30
31 ShdPtr(ShdPtr&& shdPtr) noexcept
32 : data(shdPtr.data)
33 {
34 shdPtr.data = nullptr;
35 }
36
37 ShdPtr(const ShdPtr& shdPtr)
38 : data(shdPtr.data)
39 {
40 AddPtrData(data);
41 }
42
43 ShdPtr& operator=(ShdPtr&& shdPtr) noexcept
44 {
45 if (this == &shdPtr)
46 return *this;
47
48 if (RemovePtrData(data))
49 delete data;
50
51 data = shdPtr.data;
52
53 shdPtr.data = nullptr;
54
55 return *this;
56 }
57
58 ShdPtr& operator=(const ShdPtr& shdPtr) noexcept
59 {
60 if (this == &shdPtr)
61 return *this;
62
63 if (RemovePtrData(data))
64 delete data;
65
66 data = shdPtr.data;
67
68 AddPtrData(data);
69
70 return *this;
71 }
72
73 bool operator==(const ShdPtr& shdPtr)
74 {
75 if (!HasPtrData(data))
76 data = nullptr;
77
78 return data == shdPtr.data;
79 }
80
81 bool operator==(T* inPtr)
82 {
83 if (!HasPtrData(data))
84 data = nullptr;
85
86 return data == inPtr;
87 }
88
89 bool operator!=(const ShdPtr& shdPtr)
90 {
91 if (!HasPtrData(data))
92 data = nullptr;
93
94 return data != shdPtr.data;
95 }
96
97 bool operator!=(T* inPtr)
98 {
99 if (!HasPtrData(data))
100 data = nullptr;
101
102 return data != inPtr;
103 }
104
105 void Release()
106 {
107 if (RemovePtrData(data))
108 delete data;
109
110 data = nullptr;
111 }
112
114 {
115 if (!HasPtrData(data))
116 data = nullptr;
117
118 return data;
119 }
120 };
121}
bool operator==(T *inPtr)
Definition ShdPtr.h:81
ShdPtr & operator=(const ShdPtr &shdPtr) noexcept
Definition ShdPtr.h:58
ShdPtr()
Definition ShdPtr.h:20
ShdPtr(ShdPtr &&shdPtr) noexcept
Definition ShdPtr.h:31
bool operator!=(const ShdPtr &shdPtr)
Definition ShdPtr.h:89
~ShdPtr()
Definition ShdPtr.h:14
T * GetData()
Definition ShdPtr.h:113
bool operator!=(T *inPtr)
Definition ShdPtr.h:97
ShdPtr(T *data)
Definition ShdPtr.h:25
ShdPtr(const ShdPtr &shdPtr)
Definition ShdPtr.h:37
void Release()
Definition ShdPtr.h:105
bool operator==(const ShdPtr &shdPtr)
Definition ShdPtr.h:73
ShdPtr & operator=(ShdPtr &&shdPtr) noexcept
Definition ShdPtr.h:43
Definition Anchor.h:6
EHS_LIB_IO void AddPtrData(void *data)
Definition PtrData.cpp:19
EHS_LIB_IO bool RemovePtrData(void *data)
Definition PtrData.cpp:37
EHS_LIB_IO bool HasPtrData(void *data)
Definition PtrData.cpp:7