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