ZFFramework
 
Loading...
Searching...
No Matches
ZFCoreUtilAutoPtr.h
Go to the documentation of this file.
1
5
6#ifndef _ZFI_ZFCoreUtilAutoPtr_h_
7#define _ZFI_ZFCoreUtilAutoPtr_h_
8
9#include "ZFCoreTypeDef.h"
10
12
13// ============================================================
14// zfscopeFree
15zfclassLikePOD ZFLIB_ZFCore _ZFP_zfscopeFreeContainer {
16public:
17 _ZFP_zfscopeFreeContainer(ZF_IN void *p) : p(p) {}
18 ~_ZFP_zfscopeFreeContainer(void) {
19 zffree(this->p);
20 }
21private:
22 void *p;
23};
36#define zfscopeFree(obj) \
37 _ZFP_zfscopeFreeContainer ZFUniqueName(zfscopeFree_)(obj)
38
39// ============================================================
40// zfscopeCleanup
44#define zfscopeCleanup_1(action \
45 , P0, p0 \
46 ) \
47 zfclassLikePOD ZFUniqueName(zfscopeCleanup_T) { \
48 public: \
49 ZFUniqueName(zfscopeCleanup_T)(P0 &p0) \
50 : p0(p0) \
51 {} \
52 ~ZFUniqueName(zfscopeCleanup_T)(void) { \
53 action \
54 } \
55 private: \
56 P0 &p0; \
57 } ZFUniqueName(zfscopeCleanup_)(p0)
59#define zfscopeCleanup_2(action \
60 , P0, p0 \
61 , P1, p1 \
62 ) \
63 zfclassLikePOD ZFUniqueName(zfscopeCleanup_T) { \
64 public: \
65 ZFUniqueName(zfscopeCleanup_T)(P0 &p0 \
66 , P1 &p1 \
67 ) \
68 : p0(p0) \
69 , p1(p1) \
70 {} \
71 ~ZFUniqueName(zfscopeCleanup_T)(void) { \
72 action \
73 } \
74 private: \
75 P0 &p0; \
76 P1 &p1; \
77 } ZFUniqueName(zfscopeCleanup_)(p0 \
78 , p1 \
79 )
81#define zfscopeCleanup_3(action \
82 , P0, p0 \
83 , P1, p1 \
84 , P2, p2 \
85 ) \
86 zfclassLikePOD ZFUniqueName(zfscopeCleanup_T) { \
87 public: \
88 ZFUniqueName(zfscopeCleanup_T)(P0 &p0 \
89 , P1 &p1 \
90 , P2 &p2 \
91 ) \
92 : p0(p0) \
93 , p1(p1) \
94 , p2(p2) \
95 {} \
96 ~ZFUniqueName(zfscopeCleanup_T)(void) { \
97 action \
98 } \
99 private: \
100 P0 &p0; \
101 P1 &p1; \
102 P2 &p2; \
103 } ZFUniqueName(zfscopeCleanup_)(p0 \
104 , p1 \
105 , p2 \
106 )
108#define zfscopeCleanup_4(action \
109 , P0, p0 \
110 , P1, p1 \
111 , P2, p2 \
112 , P3, p3 \
113 ) \
114 zfclassLikePOD ZFUniqueName(zfscopeCleanup_T) { \
115 public: \
116 ZFUniqueName(zfscopeCleanup_T)(P0 &p0 \
117 , P1 &p1 \
118 , P2 &p2 \
119 , P3 &p3 \
120 ) \
121 : p0(p0) \
122 , p1(p1) \
123 , p2(p2) \
124 , p3(p3) \
125 {} \
126 ~ZFUniqueName(zfscopeCleanup_T)(void) { \
127 action \
128 } \
129 private: \
130 P0 &p0; \
131 P1 &p1; \
132 P2 &p2; \
133 P3 &p3; \
134 } ZFUniqueName(zfscopeCleanup_)(p0 \
135 , p1 \
136 , p2 \
137 , p3 \
138 )
140#define zfscopeCleanup_5(action \
141 , P0, p0 \
142 , P1, p1 \
143 , P2, p2 \
144 , P3, p3 \
145 , P4, p4 \
146 ) \
147 zfclassLikePOD ZFUniqueName(zfscopeCleanup_T) { \
148 public: \
149 ZFUniqueName(zfscopeCleanup_T)(P0 &p0 \
150 , P1 &p1 \
151 , P2 &p2 \
152 , P3 &p3 \
153 , P4 &p4 \
154 ) \
155 : p0(p0) \
156 , p1(p1) \
157 , p2(p2) \
158 , p3(p3) \
159 , p4(p4) \
160 {} \
161 ~ZFUniqueName(zfscopeCleanup_T)(void) { \
162 action \
163 } \
164 private: \
165 P0 &p0; \
166 P1 &p1; \
167 P2 &p2; \
168 P3 &p3; \
169 P4 &p4; \
170 } ZFUniqueName(zfscopeCleanup_)(p0 \
171 , p1 \
172 , p2 \
173 , p3 \
174 , p4 \
175 )
177#define zfscopeCleanup_6(action \
178 , P0, p0 \
179 , P1, p1 \
180 , P2, p2 \
181 , P3, p3 \
182 , P4, p4 \
183 , P5, p5 \
184 ) \
185 zfclassLikePOD ZFUniqueName(zfscopeCleanup_T) { \
186 public: \
187 ZFUniqueName(zfscopeCleanup_T)(P0 &p0 \
188 , P1 &p1 \
189 , P2 &p2 \
190 , P3 &p3 \
191 , P4 &p4 \
192 , P5 &p5 \
193 ) \
194 : p0(p0) \
195 , p1(p1) \
196 , p2(p2) \
197 , p3(p3) \
198 , p4(p4) \
199 , p5(p5) \
200 {} \
201 ~ZFUniqueName(zfscopeCleanup_T)(void) { \
202 action \
203 } \
204 private: \
205 P0 &p0; \
206 P1 &p1; \
207 P2 &p2; \
208 P3 &p3; \
209 P4 &p4; \
210 P5 &p5; \
211 } ZFUniqueName(zfscopeCleanup_)(p0 \
212 , p1 \
213 , p2 \
214 , p3 \
215 , p4 \
216 , p5 \
217 )
219#define zfscopeCleanup_7(action \
220 , P0, p0 \
221 , P1, p1 \
222 , P2, p2 \
223 , P3, p3 \
224 , P4, p4 \
225 , P5, p5 \
226 , P6, p6 \
227 ) \
228 zfclassLikePOD ZFUniqueName(zfscopeCleanup_T) { \
229 public: \
230 ZFUniqueName(zfscopeCleanup_T)(P0 &p0 \
231 , P1 &p1 \
232 , P2 &p2 \
233 , P3 &p3 \
234 , P4 &p4 \
235 , P5 &p5 \
236 , P6 &p6 \
237 ) \
238 : p0(p0) \
239 , p1(p1) \
240 , p2(p2) \
241 , p3(p3) \
242 , p4(p4) \
243 , p5(p5) \
244 , p6(p6) \
245 {} \
246 ~ZFUniqueName(zfscopeCleanup_T)(void) { \
247 action \
248 } \
249 private: \
250 P0 &p0; \
251 P1 &p1; \
252 P2 &p2; \
253 P3 &p3; \
254 P4 &p4; \
255 P5 &p5; \
256 P6 &p6; \
257 } ZFUniqueName(zfscopeCleanup_)(p0 \
258 , p1 \
259 , p2 \
260 , p3 \
261 , p4 \
262 , p5 \
263 , p6 \
264 )
266#define zfscopeCleanup_8(action \
267 , P0, p0 \
268 , P1, p1 \
269 , P2, p2 \
270 , P3, p3 \
271 , P4, p4 \
272 , P5, p5 \
273 , P6, p6 \
274 , P7, p7 \
275 ) \
276 zfclassLikePOD ZFUniqueName(zfscopeCleanup_T) { \
277 public: \
278 ZFUniqueName(zfscopeCleanup_T)(P0 &p0 \
279 , P1 &p1 \
280 , P2 &p2 \
281 , P3 &p3 \
282 , P4 &p4 \
283 , P5 &p5 \
284 , P6 &p6 \
285 , P7 &p7 \
286 ) \
287 : p0(p0) \
288 , p1(p1) \
289 , p2(p2) \
290 , p3(p3) \
291 , p4(p4) \
292 , p5(p5) \
293 , p6(p6) \
294 , p7(p7) \
295 {} \
296 ~ZFUniqueName(zfscopeCleanup_T)(void) { \
297 action \
298 } \
299 private: \
300 P0 &p0; \
301 P1 &p1; \
302 P2 &p2; \
303 P3 &p3; \
304 P4 &p4; \
305 P5 &p5; \
306 P6 &p6; \
307 P7 &p7; \
308 } ZFUniqueName(zfscopeCleanup_)(p0 \
309 , p1 \
310 , p2 \
311 , p3 \
312 , p4 \
313 , p5 \
314 , p6 \
315 , p7 \
316 )
317
319
320#endif // #ifndef _ZFI_ZFCoreUtilAutoPtr_h_
321
#define ZFLIB_ZFCore
used to export symbols
Definition ZFCoreEnvDef.h:30
types for ZFFramework
#define zfclassLikePOD
shows the class is not a POD type, but you may use it like a POD except memset it to 0
Definition ZFCoreTypeDef_ClassType.h:41
#define zffree(ptr)
same as free defined for future use, do nothing if ptr is NULL
Definition ZFCoreTypeDef_ClassType.h:104
#define ZF_IN
dummy macro that shows the param used as required input
Definition ZFCoreTypeDef_ClassType.h:184
#define ZF_NAMESPACE_GLOBAL_BEGIN
begin namespace ZFFramework
Definition ZFNamespace.h:97
#define ZF_NAMESPACE_GLOBAL_END
end namespace ZFFramework
Definition ZFNamespace.h:98