ZFFramework
 
Loading...
Searching...
No Matches
ZFObjectDeclare.h
Go to the documentation of this file.
1
5
6#ifndef _ZFI_ZFObjectDeclare_h_
7#define _ZFI_ZFObjectDeclare_h_
8
9#include "zfany.h"
11
12// ============================================================
13template<typename T_zfsuper, typename T_superInterface, int superImplementInterface>
14zfclassNotPOD _ZFP_zfsuperI {
15public:
16 typedef T_superInterface SuperType;
17};
18template<typename T_zfsuper, typename T_superInterface>
19zfclassNotPOD _ZFP_zfsuperI<T_zfsuper, T_superInterface, 1> {
20public:
21 typedef T_zfsuper SuperType;
22};
26#define zfsuperI(T_SuperType) \
27 _ZFP_zfsuperI<zfsuper, T_SuperType, zftIsTypeOf<zfsuper, T_SuperType>::Value>::SuperType
28
29// ============================================================
30#define _ZFP_ZFOBJECT_DECLARE_PROTECTED_CONSTRUCTOR(ChildClass, SuperClass) \
31 protected: \
32 \
33 ChildClass(void) : SuperClass() {} \
34 virtual ~ChildClass(void) {} \
35 \
36 public:
37#define _ZFP_ZFOBJECT_DECLARE(ChildClass, SuperClass) \
38 ZFCLASS_DISALLOW_COPY_CONSTRUCTOR(ChildClass) \
39 public: \
40 static void _ZFP_zftIsZFObject(void) {} \
41 protected: \
42 \
43 typedef SuperClass zfsuper; \
44 \
45 typedef ChildClass zfself; \
46 public: \
47 \
48 template<typename T_ZFObject> \
49 inline T_ZFObject to(void) { \
50 return zfcast(T_ZFObject, this); \
51 } \
52 virtual inline ZFObject *toObject(void) { \
53 return this; \
54 } \
55 \
56 public: \
57 \
58 virtual inline const ZFClass *classData(void) { \
59 return this->_ZFP_ZFObject_classDynamic ? this->_ZFP_ZFObject_classDynamic : zfself::ClassData(); \
60 } \
61 private: \
62 static void _ZFP_Obj_initImplCk(ZF_IN ZFClass *cls) { \
63 if(cls->_ZFP_ZFClass_implListNeedInit) { \
64 cls->_ZFP_ZFClass_implListNeedInit = zffalse; \
65 if(zfself::_ZFP_Obj_initImpl != zfsuper::_ZFP_Obj_initImpl) { \
66 zfself::_ZFP_Obj_initImpl(cls); \
67 } \
68 } \
69 } \
70 public:
71#define _ZFP_ZFOBJECT_DECLARE_OBJECT(ChildClass, SuperClass, OuterClass, ...) \
72 public: \
73 enum {_ZFP_ZFObjectCanAlloc = 1}; \
74 public: \
75 zfpoolDeclareFriend() \
76 friend zfclassFwd _ZFP_Obj_AllocCk<zfself, 0>; \
77 friend zfclassFwd _ZFP_Obj_AllocCk<zfself, 1>; \
78 static ZFObject *_ZFP_Obj_ctor(void) { \
79 return zfpoolNew(zfself); \
80 } \
81 static void _ZFP_Obj_dtor(ZF_IN ZFObject *obj) { \
82 zfpoolDelete(_ZFP_ObjCastInternal(zfself *, obj)); \
83 } \
84 \
85 static const ZFClass *ClassData(void) { \
86 static _ZFP_ZFClassRegisterHolder _holder( \
87 ZF_NAMESPACE_CURRENT(), \
88 zftext(#ChildClass), \
89 zfsuper::ClassData(), \
90 OuterClass::ClassData(), \
91 (zfself::_ZFP_ZFObjectCanAllocPublic != 0), \
92 (&zfself::_ZFP_zfAllocCacheIvk != &zfsuper::_ZFP_zfAllocCacheIvk) \
93 ? &zfself::_ZFP_zfAllocCacheIvk \
94 : zfnull, \
95 &zfself::_ZFP_Obj_ctor, \
96 &zfself::_ZFP_Obj_dtor, \
97 &zfself::_ZFP_Obj_initImplCk \
98 ); \
99 return _holder.cls; \
100 }
101#define _ZFP_ZFOBJECT_DECLARE_ABSTRACT(ChildClass, SuperClass, OuterClass, ...) \
102 public: \
103 typedef enum {_ZFP_ZFObjectCanAlloc = 0} _ZFP_ZFObjectCanAllocChecker; \
104 public: \
105 \
106 static const ZFClass *ClassData(void) { \
107 static _ZFP_ZFClassRegisterHolder _holder( \
108 ZF_NAMESPACE_CURRENT(), \
109 zftext(#ChildClass), \
110 zfsuper::ClassData(), \
111 OuterClass::ClassData(), \
112 (zfself::_ZFP_ZFObjectCanAllocPublic != 0), \
113 zfnull, \
114 zfnull, \
115 zfnull, \
116 &zfself::_ZFP_Obj_initImplCk \
117 ); \
118 return _holder.cls; \
119 }
126#define ZFOBJECT_DECLARE(ChildClass, SuperClass, ...) \
127 _ZFP_ZFOBJECT_DECLARE(ChildClass, SuperClass) \
128 ZFM_VA_APPEND(_ZFP_ZFOBJECT_DECLARE_OBJECT, _ZFP_Obj_Base, ChildClass, SuperClass, ##__VA_ARGS__) \
129 _ZFP_ZFOBJECT_DECLARE_PROTECTED_CONSTRUCTOR(ChildClass, SuperClass) \
130 public:
131
142#define ZFOBJECT_DECLARE_WITH_CUSTOM_CTOR(ChildClass, SuperClass, ...) \
143 _ZFP_ZFOBJECT_DECLARE(ChildClass, SuperClass) \
144 ZFM_VA_APPEND(_ZFP_ZFOBJECT_DECLARE_OBJECT, _ZFP_Obj_Base, ChildClass, SuperClass, ##__VA_ARGS__) \
145 public:
146
152#define ZFOBJECT_DECLARE_ABSTRACT(ChildClass, SuperClass, ...) \
153 _ZFP_ZFOBJECT_DECLARE(ChildClass, SuperClass) \
154 ZFM_VA_APPEND(_ZFP_ZFOBJECT_DECLARE_ABSTRACT, _ZFP_Obj_Base, ChildClass, SuperClass, ##__VA_ARGS__) \
155 _ZFP_ZFOBJECT_DECLARE_PROTECTED_CONSTRUCTOR(ChildClass, SuperClass) \
156 public:
157
160#define ZFOBJECT_DECLARE_ABSTRACT_WITH_CUSTOM_CTOR(ChildClass, SuperClass, ...) \
161 _ZFP_ZFOBJECT_DECLARE(ChildClass, SuperClass) \
162 ZFM_VA_APPEND(_ZFP_ZFOBJECT_DECLARE_ABSTRACT, _ZFP_Obj_Base, ChildClass, SuperClass, ##__VA_ARGS__) \
163 public:
164
209#define ZFOBJECT_REGISTER(T_ZFObject, ...) \
210 _ZFP_ZFOBJECT_REGISTER( \
211 _ZFP_ZFOBJECT_REGISTER_regSig(ZFM_PARAM_NUM(T_ZFObject, ##__VA_ARGS__), T_ZFObject, ##__VA_ARGS__), \
212 ZFM_FIX_PARAM(_ZFP_ZFOBJECT_REGISTER_clsSig_EXPAND, ZFM_EMPTY, T_ZFObject, ##__VA_ARGS__) \
213 )
214#define _ZFP_ZFOBJECT_REGISTER(regSig, clsSig) \
215 _ZFP_ZFOBJECT_REGISTER_(regSig, clsSig)
216#define _ZFP_ZFOBJECT_REGISTER_(regSig, clsSig) \
217 ZF_STATIC_REGISTER_INIT(regSig) { \
218 clsSig ClassData()/* ->_ZFP_ZFClass_autoRegister() */; \
219 } \
220 ZF_STATIC_REGISTER_END(regSig)
221
222#define _ZFP_ZFOBJECT_REGISTER_regSig_1(T0) ObjR_##T0
223#define _ZFP_ZFOBJECT_REGISTER_regSig_2(T0, T1) ObjR_##T0##_##T1
224#define _ZFP_ZFOBJECT_REGISTER_regSig_3(T0, T1, T2) ObjR_##T0##_##T1##_##T2
225#define _ZFP_ZFOBJECT_REGISTER_regSig_4(T0, T1, T2, T3) ObjR_##T0##_##T1##_##T2##_##T3
226#define _ZFP_ZFOBJECT_REGISTER_regSig_(N, T, ...) _ZFP_ZFOBJECT_REGISTER_regSig_##N(T, ##__VA_ARGS__)
227#define _ZFP_ZFOBJECT_REGISTER_regSig(N, T, ...) _ZFP_ZFOBJECT_REGISTER_regSig_(N, T, ##__VA_ARGS__)
228
229#define _ZFP_ZFOBJECT_REGISTER_clsSig_EXPAND(T) T::
230
245#define ZFOBJECT_PRIVATE_ALLOC(...) \
246 public: \
247 enum {_ZFP_ZFObjectCanAllocPublic = 0}; \
248 protected:
249
250// ============================================================
254#define ZFOBJECT_ON_INIT_INLINE_1( \
255 ZFMP_0 \
256 ) \
257 ZFMETHOD_INLINE_DETAIL_1( \
258 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
259 void, objectOnInit \
260 , _ZFP_MtdP_EXPAND(ZFMP_0) \
261 )
263#define ZFOBJECT_ON_INIT_DECLARE_1( \
264 ZFMP_0 \
265 ) \
266 ZFMETHOD_DECLARE_DETAIL_1( \
267 protected, ZFMethodTypeVirtual, \
268 void, objectOnInit \
269 , _ZFP_MtdP_EXPAND(ZFMP_0) \
270 )
272#define ZFOBJECT_ON_INIT_DEFINE_1(OwnerClass \
273 , ZFMP_0 \
274 ) \
275 ZFMETHOD_DEFINE_1(OwnerClass, void, objectOnInit \
276 , _ZFP_MtdP_EXPAND(ZFMP_0) \
277 )
279#define ZFOBJECT_ON_INIT_INLINE_2( \
280 ZFMP_0 \
281 , ZFMP_1 \
282 ) \
283 ZFMETHOD_INLINE_DETAIL_2( \
284 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
285 void, objectOnInit \
286 , _ZFP_MtdP_EXPAND(ZFMP_0) \
287 , _ZFP_MtdP_EXPAND(ZFMP_1) \
288 )
290#define ZFOBJECT_ON_INIT_DECLARE_2( \
291 ZFMP_0 \
292 , ZFMP_1 \
293 ) \
294 ZFMETHOD_DECLARE_DETAIL_2( \
295 protected, ZFMethodTypeVirtual, \
296 void, objectOnInit \
297 , _ZFP_MtdP_EXPAND(ZFMP_0) \
298 , _ZFP_MtdP_EXPAND(ZFMP_1) \
299 )
301#define ZFOBJECT_ON_INIT_DEFINE_2(OwnerClass \
302 , ZFMP_0 \
303 , ZFMP_1 \
304 ) \
305 ZFMETHOD_DEFINE_2(OwnerClass, void, objectOnInit \
306 , _ZFP_MtdP_EXPAND(ZFMP_0) \
307 , _ZFP_MtdP_EXPAND(ZFMP_1) \
308 )
310#define ZFOBJECT_ON_INIT_INLINE_3( \
311 ZFMP_0 \
312 , ZFMP_1 \
313 , ZFMP_2 \
314 ) \
315 ZFMETHOD_INLINE_DETAIL_3( \
316 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
317 void, objectOnInit \
318 , _ZFP_MtdP_EXPAND(ZFMP_0) \
319 , _ZFP_MtdP_EXPAND(ZFMP_1) \
320 , _ZFP_MtdP_EXPAND(ZFMP_2) \
321 )
323#define ZFOBJECT_ON_INIT_DECLARE_3( \
324 ZFMP_0 \
325 , ZFMP_1 \
326 , ZFMP_2 \
327 ) \
328 ZFMETHOD_DECLARE_DETAIL_3( \
329 protected, ZFMethodTypeVirtual, \
330 void, objectOnInit \
331 , _ZFP_MtdP_EXPAND(ZFMP_0) \
332 , _ZFP_MtdP_EXPAND(ZFMP_1) \
333 , _ZFP_MtdP_EXPAND(ZFMP_2) \
334 )
336#define ZFOBJECT_ON_INIT_DEFINE_3(OwnerClass \
337 , ZFMP_0 \
338 , ZFMP_1 \
339 , ZFMP_2 \
340 ) \
341 ZFMETHOD_DEFINE_3(OwnerClass, void, objectOnInit \
342 , _ZFP_MtdP_EXPAND(ZFMP_0) \
343 , _ZFP_MtdP_EXPAND(ZFMP_1) \
344 , _ZFP_MtdP_EXPAND(ZFMP_2) \
345 )
347#define ZFOBJECT_ON_INIT_INLINE_4( \
348 ZFMP_0 \
349 , ZFMP_1 \
350 , ZFMP_2 \
351 , ZFMP_3 \
352 ) \
353 ZFMETHOD_INLINE_DETAIL_4( \
354 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
355 void, objectOnInit \
356 , _ZFP_MtdP_EXPAND(ZFMP_0) \
357 , _ZFP_MtdP_EXPAND(ZFMP_1) \
358 , _ZFP_MtdP_EXPAND(ZFMP_2) \
359 , _ZFP_MtdP_EXPAND(ZFMP_3) \
360 )
362#define ZFOBJECT_ON_INIT_DECLARE_4( \
363 ZFMP_0 \
364 , ZFMP_1 \
365 , ZFMP_2 \
366 , ZFMP_3 \
367 ) \
368 ZFMETHOD_DECLARE_DETAIL_4( \
369 protected, ZFMethodTypeVirtual, \
370 void, objectOnInit \
371 , _ZFP_MtdP_EXPAND(ZFMP_0) \
372 , _ZFP_MtdP_EXPAND(ZFMP_1) \
373 , _ZFP_MtdP_EXPAND(ZFMP_2) \
374 , _ZFP_MtdP_EXPAND(ZFMP_3) \
375 )
377#define ZFOBJECT_ON_INIT_DEFINE_4(OwnerClass \
378 , ZFMP_0 \
379 , ZFMP_1 \
380 , ZFMP_2 \
381 , ZFMP_3 \
382 ) \
383 ZFMETHOD_DEFINE_4(OwnerClass, void, objectOnInit \
384 , _ZFP_MtdP_EXPAND(ZFMP_0) \
385 , _ZFP_MtdP_EXPAND(ZFMP_1) \
386 , _ZFP_MtdP_EXPAND(ZFMP_2) \
387 , _ZFP_MtdP_EXPAND(ZFMP_3) \
388 )
390#define ZFOBJECT_ON_INIT_INLINE_5( \
391 ZFMP_0 \
392 , ZFMP_1 \
393 , ZFMP_2 \
394 , ZFMP_3 \
395 , ZFMP_4 \
396 ) \
397 ZFMETHOD_INLINE_DETAIL_5( \
398 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
399 void, objectOnInit \
400 , _ZFP_MtdP_EXPAND(ZFMP_0) \
401 , _ZFP_MtdP_EXPAND(ZFMP_1) \
402 , _ZFP_MtdP_EXPAND(ZFMP_2) \
403 , _ZFP_MtdP_EXPAND(ZFMP_3) \
404 , _ZFP_MtdP_EXPAND(ZFMP_4) \
405 )
407#define ZFOBJECT_ON_INIT_DECLARE_5( \
408 ZFMP_0 \
409 , ZFMP_1 \
410 , ZFMP_2 \
411 , ZFMP_3 \
412 , ZFMP_4 \
413 ) \
414 ZFMETHOD_DECLARE_DETAIL_5( \
415 protected, ZFMethodTypeVirtual, \
416 void, objectOnInit \
417 , _ZFP_MtdP_EXPAND(ZFMP_0) \
418 , _ZFP_MtdP_EXPAND(ZFMP_1) \
419 , _ZFP_MtdP_EXPAND(ZFMP_2) \
420 , _ZFP_MtdP_EXPAND(ZFMP_3) \
421 , _ZFP_MtdP_EXPAND(ZFMP_4) \
422 )
424#define ZFOBJECT_ON_INIT_DEFINE_5(OwnerClass \
425 , ZFMP_0 \
426 , ZFMP_1 \
427 , ZFMP_2 \
428 , ZFMP_3 \
429 , ZFMP_4 \
430 ) \
431 ZFMETHOD_DEFINE_5(OwnerClass, void, objectOnInit \
432 , _ZFP_MtdP_EXPAND(ZFMP_0) \
433 , _ZFP_MtdP_EXPAND(ZFMP_1) \
434 , _ZFP_MtdP_EXPAND(ZFMP_2) \
435 , _ZFP_MtdP_EXPAND(ZFMP_3) \
436 , _ZFP_MtdP_EXPAND(ZFMP_4) \
437 )
439#define ZFOBJECT_ON_INIT_INLINE_6( \
440 ZFMP_0 \
441 , ZFMP_1 \
442 , ZFMP_2 \
443 , ZFMP_3 \
444 , ZFMP_4 \
445 , ZFMP_5 \
446 ) \
447 ZFMETHOD_INLINE_DETAIL_6( \
448 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
449 void, objectOnInit \
450 , _ZFP_MtdP_EXPAND(ZFMP_0) \
451 , _ZFP_MtdP_EXPAND(ZFMP_1) \
452 , _ZFP_MtdP_EXPAND(ZFMP_2) \
453 , _ZFP_MtdP_EXPAND(ZFMP_3) \
454 , _ZFP_MtdP_EXPAND(ZFMP_4) \
455 , _ZFP_MtdP_EXPAND(ZFMP_5) \
456 )
458#define ZFOBJECT_ON_INIT_DECLARE_6( \
459 ZFMP_0 \
460 , ZFMP_1 \
461 , ZFMP_2 \
462 , ZFMP_3 \
463 , ZFMP_4 \
464 , ZFMP_5 \
465 ) \
466 ZFMETHOD_DECLARE_DETAIL_6( \
467 protected, ZFMethodTypeVirtual, \
468 void, objectOnInit \
469 , _ZFP_MtdP_EXPAND(ZFMP_0) \
470 , _ZFP_MtdP_EXPAND(ZFMP_1) \
471 , _ZFP_MtdP_EXPAND(ZFMP_2) \
472 , _ZFP_MtdP_EXPAND(ZFMP_3) \
473 , _ZFP_MtdP_EXPAND(ZFMP_4) \
474 , _ZFP_MtdP_EXPAND(ZFMP_5) \
475 )
477#define ZFOBJECT_ON_INIT_DEFINE_6(OwnerClass \
478 , ZFMP_0 \
479 , ZFMP_1 \
480 , ZFMP_2 \
481 , ZFMP_3 \
482 , ZFMP_4 \
483 , ZFMP_5 \
484 ) \
485 ZFMETHOD_DEFINE_6(OwnerClass, void, objectOnInit \
486 , _ZFP_MtdP_EXPAND(ZFMP_0) \
487 , _ZFP_MtdP_EXPAND(ZFMP_1) \
488 , _ZFP_MtdP_EXPAND(ZFMP_2) \
489 , _ZFP_MtdP_EXPAND(ZFMP_3) \
490 , _ZFP_MtdP_EXPAND(ZFMP_4) \
491 , _ZFP_MtdP_EXPAND(ZFMP_5) \
492 )
494#define ZFOBJECT_ON_INIT_INLINE_7( \
495 ZFMP_0 \
496 , ZFMP_1 \
497 , ZFMP_2 \
498 , ZFMP_3 \
499 , ZFMP_4 \
500 , ZFMP_5 \
501 , ZFMP_6 \
502 ) \
503 ZFMETHOD_INLINE_DETAIL_7( \
504 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
505 void, objectOnInit \
506 , _ZFP_MtdP_EXPAND(ZFMP_0) \
507 , _ZFP_MtdP_EXPAND(ZFMP_1) \
508 , _ZFP_MtdP_EXPAND(ZFMP_2) \
509 , _ZFP_MtdP_EXPAND(ZFMP_3) \
510 , _ZFP_MtdP_EXPAND(ZFMP_4) \
511 , _ZFP_MtdP_EXPAND(ZFMP_5) \
512 , _ZFP_MtdP_EXPAND(ZFMP_6) \
513 )
515#define ZFOBJECT_ON_INIT_DECLARE_7( \
516 ZFMP_0 \
517 , ZFMP_1 \
518 , ZFMP_2 \
519 , ZFMP_3 \
520 , ZFMP_4 \
521 , ZFMP_5 \
522 , ZFMP_6 \
523 ) \
524 ZFMETHOD_DECLARE_DETAIL_7( \
525 protected, ZFMethodTypeVirtual, \
526 void, objectOnInit \
527 , _ZFP_MtdP_EXPAND(ZFMP_0) \
528 , _ZFP_MtdP_EXPAND(ZFMP_1) \
529 , _ZFP_MtdP_EXPAND(ZFMP_2) \
530 , _ZFP_MtdP_EXPAND(ZFMP_3) \
531 , _ZFP_MtdP_EXPAND(ZFMP_4) \
532 , _ZFP_MtdP_EXPAND(ZFMP_5) \
533 , _ZFP_MtdP_EXPAND(ZFMP_6) \
534 )
536#define ZFOBJECT_ON_INIT_DEFINE_7(OwnerClass \
537 , ZFMP_0 \
538 , ZFMP_1 \
539 , ZFMP_2 \
540 , ZFMP_3 \
541 , ZFMP_4 \
542 , ZFMP_5 \
543 , ZFMP_6 \
544 ) \
545 ZFMETHOD_DEFINE_7(OwnerClass, void, objectOnInit \
546 , _ZFP_MtdP_EXPAND(ZFMP_0) \
547 , _ZFP_MtdP_EXPAND(ZFMP_1) \
548 , _ZFP_MtdP_EXPAND(ZFMP_2) \
549 , _ZFP_MtdP_EXPAND(ZFMP_3) \
550 , _ZFP_MtdP_EXPAND(ZFMP_4) \
551 , _ZFP_MtdP_EXPAND(ZFMP_5) \
552 , _ZFP_MtdP_EXPAND(ZFMP_6) \
553 )
555#define ZFOBJECT_ON_INIT_INLINE_8( \
556 ZFMP_0 \
557 , ZFMP_1 \
558 , ZFMP_2 \
559 , ZFMP_3 \
560 , ZFMP_4 \
561 , ZFMP_5 \
562 , ZFMP_6 \
563 , ZFMP_7 \
564 ) \
565 ZFMETHOD_INLINE_DETAIL_8( \
566 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
567 void, objectOnInit \
568 , _ZFP_MtdP_EXPAND(ZFMP_0) \
569 , _ZFP_MtdP_EXPAND(ZFMP_1) \
570 , _ZFP_MtdP_EXPAND(ZFMP_2) \
571 , _ZFP_MtdP_EXPAND(ZFMP_3) \
572 , _ZFP_MtdP_EXPAND(ZFMP_4) \
573 , _ZFP_MtdP_EXPAND(ZFMP_5) \
574 , _ZFP_MtdP_EXPAND(ZFMP_6) \
575 , _ZFP_MtdP_EXPAND(ZFMP_7) \
576 )
578#define ZFOBJECT_ON_INIT_DECLARE_8( \
579 ZFMP_0 \
580 , ZFMP_1 \
581 , ZFMP_2 \
582 , ZFMP_3 \
583 , ZFMP_4 \
584 , ZFMP_5 \
585 , ZFMP_6 \
586 , ZFMP_7 \
587 ) \
588 ZFMETHOD_DECLARE_DETAIL_8( \
589 protected, ZFMethodTypeVirtual, \
590 void, objectOnInit \
591 , _ZFP_MtdP_EXPAND(ZFMP_0) \
592 , _ZFP_MtdP_EXPAND(ZFMP_1) \
593 , _ZFP_MtdP_EXPAND(ZFMP_2) \
594 , _ZFP_MtdP_EXPAND(ZFMP_3) \
595 , _ZFP_MtdP_EXPAND(ZFMP_4) \
596 , _ZFP_MtdP_EXPAND(ZFMP_5) \
597 , _ZFP_MtdP_EXPAND(ZFMP_6) \
598 , _ZFP_MtdP_EXPAND(ZFMP_7) \
599 )
601#define ZFOBJECT_ON_INIT_DEFINE_8(OwnerClass \
602 , ZFMP_0 \
603 , ZFMP_1 \
604 , ZFMP_2 \
605 , ZFMP_3 \
606 , ZFMP_4 \
607 , ZFMP_5 \
608 , ZFMP_6 \
609 , ZFMP_7 \
610 ) \
611 ZFMETHOD_DEFINE_8(OwnerClass, void, objectOnInit \
612 , _ZFP_MtdP_EXPAND(ZFMP_0) \
613 , _ZFP_MtdP_EXPAND(ZFMP_1) \
614 , _ZFP_MtdP_EXPAND(ZFMP_2) \
615 , _ZFP_MtdP_EXPAND(ZFMP_3) \
616 , _ZFP_MtdP_EXPAND(ZFMP_4) \
617 , _ZFP_MtdP_EXPAND(ZFMP_5) \
618 , _ZFP_MtdP_EXPAND(ZFMP_6) \
619 , _ZFP_MtdP_EXPAND(ZFMP_7) \
620 )
621
622// ============================================================
626#define ZFOBJECT_ON_INIT_USER_REGISTER_1(methodInvokerAction, ownerClassSig \
627 , ZFMP_0 \
628 ) \
629 ZFMETHOD_USER_REGISTER_DETAIL_1({ \
630 methodInvokerAction \
631 }, ownerClassSig, \
632 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
633 void, objectOnInit \
634 , _ZFP_MtdP_EXPAND(ZFMP_0) \
635 )
637#define ZFOBJECT_ON_INIT_USER_REGISTER_2(methodInvokerAction, ownerClassSig \
638 , ZFMP_0 \
639 , ZFMP_1 \
640 ) \
641 ZFMETHOD_USER_REGISTER_DETAIL_2({ \
642 methodInvokerAction \
643 }, ownerClassSig, \
644 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
645 void, objectOnInit \
646 , _ZFP_MtdP_EXPAND(ZFMP_0) \
647 , _ZFP_MtdP_EXPAND(ZFMP_1) \
648 )
650#define ZFOBJECT_ON_INIT_USER_REGISTER_3(methodInvokerAction, ownerClassSig \
651 , ZFMP_0 \
652 , ZFMP_1 \
653 , ZFMP_2 \
654 ) \
655 ZFMETHOD_USER_REGISTER_DETAIL_3({ \
656 methodInvokerAction \
657 }, ownerClassSig, \
658 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
659 void, objectOnInit \
660 , _ZFP_MtdP_EXPAND(ZFMP_0) \
661 , _ZFP_MtdP_EXPAND(ZFMP_1) \
662 , _ZFP_MtdP_EXPAND(ZFMP_2) \
663 )
665#define ZFOBJECT_ON_INIT_USER_REGISTER_4(methodInvokerAction, ownerClassSig \
666 , ZFMP_0 \
667 , ZFMP_1 \
668 , ZFMP_2 \
669 , ZFMP_3 \
670 ) \
671 ZFMETHOD_USER_REGISTER_DETAIL_4({ \
672 methodInvokerAction \
673 }, ownerClassSig, \
674 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
675 void, objectOnInit \
676 , _ZFP_MtdP_EXPAND(ZFMP_0) \
677 , _ZFP_MtdP_EXPAND(ZFMP_1) \
678 , _ZFP_MtdP_EXPAND(ZFMP_2) \
679 , _ZFP_MtdP_EXPAND(ZFMP_3) \
680 )
682#define ZFOBJECT_ON_INIT_USER_REGISTER_5(methodInvokerAction, ownerClassSig \
683 , ZFMP_0 \
684 , ZFMP_1 \
685 , ZFMP_2 \
686 , ZFMP_3 \
687 , ZFMP_4 \
688 ) \
689 ZFMETHOD_USER_REGISTER_DETAIL_5({ \
690 methodInvokerAction \
691 }, ownerClassSig, \
692 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
693 void, objectOnInit \
694 , _ZFP_MtdP_EXPAND(ZFMP_0) \
695 , _ZFP_MtdP_EXPAND(ZFMP_1) \
696 , _ZFP_MtdP_EXPAND(ZFMP_2) \
697 , _ZFP_MtdP_EXPAND(ZFMP_3) \
698 , _ZFP_MtdP_EXPAND(ZFMP_4) \
699 )
701#define ZFOBJECT_ON_INIT_USER_REGISTER_6(methodInvokerAction, ownerClassSig \
702 , ZFMP_0 \
703 , ZFMP_1 \
704 , ZFMP_2 \
705 , ZFMP_3 \
706 , ZFMP_4 \
707 , ZFMP_5 \
708 ) \
709 ZFMETHOD_USER_REGISTER_DETAIL_6({ \
710 methodInvokerAction \
711 }, ownerClassSig, \
712 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
713 void, objectOnInit \
714 , _ZFP_MtdP_EXPAND(ZFMP_0) \
715 , _ZFP_MtdP_EXPAND(ZFMP_1) \
716 , _ZFP_MtdP_EXPAND(ZFMP_2) \
717 , _ZFP_MtdP_EXPAND(ZFMP_3) \
718 , _ZFP_MtdP_EXPAND(ZFMP_4) \
719 , _ZFP_MtdP_EXPAND(ZFMP_5) \
720 )
722#define ZFOBJECT_ON_INIT_USER_REGISTER_7(methodInvokerAction, ownerClassSig \
723 , ZFMP_0 \
724 , ZFMP_1 \
725 , ZFMP_2 \
726 , ZFMP_3 \
727 , ZFMP_4 \
728 , ZFMP_5 \
729 , ZFMP_6 \
730 ) \
731 ZFMETHOD_USER_REGISTER_DETAIL_7({ \
732 methodInvokerAction \
733 }, ownerClassSig, \
734 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
735 void, objectOnInit \
736 , _ZFP_MtdP_EXPAND(ZFMP_0) \
737 , _ZFP_MtdP_EXPAND(ZFMP_1) \
738 , _ZFP_MtdP_EXPAND(ZFMP_2) \
739 , _ZFP_MtdP_EXPAND(ZFMP_3) \
740 , _ZFP_MtdP_EXPAND(ZFMP_4) \
741 , _ZFP_MtdP_EXPAND(ZFMP_5) \
742 , _ZFP_MtdP_EXPAND(ZFMP_6) \
743 )
745#define ZFOBJECT_ON_INIT_USER_REGISTER_8(methodInvokerAction, ownerClassSig \
746 , ZFMP_0 \
747 , ZFMP_1 \
748 , ZFMP_2 \
749 , ZFMP_3 \
750 , ZFMP_4 \
751 , ZFMP_5 \
752 , ZFMP_6 \
753 , ZFMP_7 \
754 ) \
755 ZFMETHOD_USER_REGISTER_DETAIL_8({ \
756 methodInvokerAction \
757 }, ownerClassSig, \
758 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
759 void, objectOnInit \
760 , _ZFP_MtdP_EXPAND(ZFMP_0) \
761 , _ZFP_MtdP_EXPAND(ZFMP_1) \
762 , _ZFP_MtdP_EXPAND(ZFMP_2) \
763 , _ZFP_MtdP_EXPAND(ZFMP_3) \
764 , _ZFP_MtdP_EXPAND(ZFMP_4) \
765 , _ZFP_MtdP_EXPAND(ZFMP_5) \
766 , _ZFP_MtdP_EXPAND(ZFMP_6) \
767 , _ZFP_MtdP_EXPAND(ZFMP_7) \
768 )
769
770// ============================================================
774#define ZFObjectOnInitUserRegister_1(resultMethod, methodInvokerAction, ownerClass \
775 , ZFMP_0 \
776 ) \
777 ZFMethodUserRegisterDetail_1(resultMethod, { \
778 methodInvokerAction \
779 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
780 , _ZFP_MtdP_EXPAND(ZFMP_0) \
781 )
783#define ZFObjectOnInitUserRegister_2(resultMethod, methodInvokerAction, ownerClass \
784 , ZFMP_0 \
785 , ZFMP_1 \
786 ) \
787 ZFMethodUserRegisterDetail_2(resultMethod, { \
788 methodInvokerAction \
789 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
790 , _ZFP_MtdP_EXPAND(ZFMP_0) \
791 , _ZFP_MtdP_EXPAND(ZFMP_1) \
792 )
794#define ZFObjectOnInitUserRegister_3(resultMethod, methodInvokerAction, ownerClass \
795 , ZFMP_0 \
796 , ZFMP_1 \
797 , ZFMP_2 \
798 ) \
799 ZFMethodUserRegisterDetail_3(resultMethod, { \
800 methodInvokerAction \
801 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
802 , _ZFP_MtdP_EXPAND(ZFMP_0) \
803 , _ZFP_MtdP_EXPAND(ZFMP_1) \
804 , _ZFP_MtdP_EXPAND(ZFMP_2) \
805 )
807#define ZFObjectOnInitUserRegister_4(resultMethod, methodInvokerAction, ownerClass \
808 , ZFMP_0 \
809 , ZFMP_1 \
810 , ZFMP_2 \
811 , ZFMP_3 \
812 ) \
813 ZFMethodUserRegisterDetail_4(resultMethod, { \
814 methodInvokerAction \
815 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
816 , _ZFP_MtdP_EXPAND(ZFMP_0) \
817 , _ZFP_MtdP_EXPAND(ZFMP_1) \
818 , _ZFP_MtdP_EXPAND(ZFMP_2) \
819 , _ZFP_MtdP_EXPAND(ZFMP_3) \
820 )
822#define ZFObjectOnInitUserRegister_5(resultMethod, methodInvokerAction, ownerClass \
823 , ZFMP_0 \
824 , ZFMP_1 \
825 , ZFMP_2 \
826 , ZFMP_3 \
827 , ZFMP_4 \
828 ) \
829 ZFMethodUserRegisterDetail_5(resultMethod, { \
830 methodInvokerAction \
831 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
832 , _ZFP_MtdP_EXPAND(ZFMP_0) \
833 , _ZFP_MtdP_EXPAND(ZFMP_1) \
834 , _ZFP_MtdP_EXPAND(ZFMP_2) \
835 , _ZFP_MtdP_EXPAND(ZFMP_3) \
836 , _ZFP_MtdP_EXPAND(ZFMP_4) \
837 )
839#define ZFObjectOnInitUserRegister_6(resultMethod, methodInvokerAction, ownerClass \
840 , ZFMP_0 \
841 , ZFMP_1 \
842 , ZFMP_2 \
843 , ZFMP_3 \
844 , ZFMP_4 \
845 , ZFMP_5 \
846 ) \
847 ZFMethodUserRegisterDetail_6(resultMethod, { \
848 methodInvokerAction \
849 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
850 , _ZFP_MtdP_EXPAND(ZFMP_0) \
851 , _ZFP_MtdP_EXPAND(ZFMP_1) \
852 , _ZFP_MtdP_EXPAND(ZFMP_2) \
853 , _ZFP_MtdP_EXPAND(ZFMP_3) \
854 , _ZFP_MtdP_EXPAND(ZFMP_4) \
855 , _ZFP_MtdP_EXPAND(ZFMP_5) \
856 )
858#define ZFObjectOnInitUserRegister_7(resultMethod, methodInvokerAction, ownerClass \
859 , ZFMP_0 \
860 , ZFMP_1 \
861 , ZFMP_2 \
862 , ZFMP_3 \
863 , ZFMP_4 \
864 , ZFMP_5 \
865 , ZFMP_6 \
866 ) \
867 ZFMethodUserRegisterDetail_7(resultMethod, { \
868 methodInvokerAction \
869 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
870 , _ZFP_MtdP_EXPAND(ZFMP_0) \
871 , _ZFP_MtdP_EXPAND(ZFMP_1) \
872 , _ZFP_MtdP_EXPAND(ZFMP_2) \
873 , _ZFP_MtdP_EXPAND(ZFMP_3) \
874 , _ZFP_MtdP_EXPAND(ZFMP_4) \
875 , _ZFP_MtdP_EXPAND(ZFMP_5) \
876 , _ZFP_MtdP_EXPAND(ZFMP_6) \
877 )
879#define ZFObjectOnInitUserRegister_8(resultMethod, methodInvokerAction, ownerClass \
880 , ZFMP_0 \
881 , ZFMP_1 \
882 , ZFMP_2 \
883 , ZFMP_3 \
884 , ZFMP_4 \
885 , ZFMP_5 \
886 , ZFMP_6 \
887 , ZFMP_7 \
888 ) \
889 ZFMethodUserRegisterDetail_8(resultMethod, { \
890 methodInvokerAction \
891 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
892 , _ZFP_MtdP_EXPAND(ZFMP_0) \
893 , _ZFP_MtdP_EXPAND(ZFMP_1) \
894 , _ZFP_MtdP_EXPAND(ZFMP_2) \
895 , _ZFP_MtdP_EXPAND(ZFMP_3) \
896 , _ZFP_MtdP_EXPAND(ZFMP_4) \
897 , _ZFP_MtdP_EXPAND(ZFMP_5) \
898 , _ZFP_MtdP_EXPAND(ZFMP_6) \
899 , _ZFP_MtdP_EXPAND(ZFMP_7) \
900 )
901
902// ============================================================
910 ZF_IN const ZFClass *cls
911 , ZF_IN const ZFMP &methodParam
912 , ZF_IN const ZFListener &methodImpl
913 , ZF_OUT_OPT zfstring *errorHint = zfnull
914 );
919 ZF_IN const ZFClass *cls
921 , ZF_OUT_OPT zfstring *errorHint = zfnull
922 );
923
925#endif // #ifndef _ZFI_ZFObjectDeclare_h_
926
#define ZFLIB_ZFCore
used to export symbols
Definition ZFCoreEnvDef.h:30
#define ZF_OUT_OPT
dummy macro that shows the param used as optional output
Definition ZFCoreTypeDef_ClassType.h:192
#define ZF_IN
dummy macro that shows the param used as required input
Definition ZFCoreTypeDef_ClassType.h:180
#define zfclassNotPOD
shows the class is not a POD type, you should not memset it or declare it in stack or copy value by c...
Definition ZFCoreTypeDef_ClassType.h:48
#define zfclassFwd
forward declaration of a class type
Definition ZFCoreTypeDef_ClassType.h:31
#define zfnull
same as NULL, defined for future use
Definition ZFCoreTypeDef_CoreType.h:88
zft_zfstring< zfchar > zfstring
see zft_zfstring
Definition ZFCoreTypeDef_StringType.h:15
#define ZF_NAMESPACE_GLOBAL_BEGIN
begin namespace ZFFramework
Definition ZFNamespace.h:97
#define ZF_NAMESPACE_GLOBAL_END
end namespace ZFFramework
Definition ZFNamespace.h:98
const ZFMethod * ZFObjectOnInitDynamicRegister(const ZFClass *cls, const ZFMP &methodParam, const ZFListener &methodImpl, zfstring *errorHint=zft_zfnull)
util to declare ZFObject::objectOnInit as ZFMethodDynamicRegister
ZFObject's class info.
Definition ZFClass.h:67
listener as ZFCallback, mostly used by ZFObject::observerNotify
Definition ZFObjectObserver.h:30
util for ZFDynamic::method
Definition ZFMethodDynamicRegister.h:197
param for ZFMethodDynamicRegister
Definition ZFMethodDynamicRegister.h:102
reflectable method for ZFObject
Definition ZFMethod.h:252
util class to cast ZFObject types freely