6#ifndef _ZFI_ZFObjectDeclare_h_
7#define _ZFI_ZFObjectDeclare_h_
13template<
typename T_zfsuper,
typename T_superInterface,
int superImplementInterface>
16 typedef T_superInterface SuperType;
18template<
typename T_zfsuper,
typename T_superInterface>
21 typedef T_zfsuper SuperType;
26#define zfsuperI(T_SuperType) \
27 _ZFP_zfsuperI<zfsuper, T_SuperType, zftIsTypeOf<zfsuper, T_SuperType>::Value>::SuperType
30#define _ZFP_ZFOBJECT_DECLARE_PROTECTED_CONSTRUCTOR(ChildClass, SuperClass) \
33 ChildClass(void) : SuperClass() {} \
34 virtual ~ChildClass(void) {} \
37#define _ZFP_ZFOBJECT_DECLARE(ChildClass, SuperClass) \
38 ZFCLASS_DISALLOW_COPY_CONSTRUCTOR(ChildClass) \
40 static void _ZFP_zftIsZFObject(void) {} \
43 typedef SuperClass zfsuper; \
45 typedef ChildClass zfself; \
48 template<typename T_ZFObject> \
49 inline T_ZFObject to(void) { \
50 return zfcast(T_ZFObject, this); \
52 virtual inline ZFObject *toObject(void) { \
58 virtual inline const ZFClass *classData(void) { \
59 return this->_ZFP_ZFObject_classDynamic ? this->_ZFP_ZFObject_classDynamic : zfself::ClassData(); \
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); \
71#define _ZFP_ZFOBJECT_DECLARE_OBJECT(ChildClass, SuperClass, OuterClass, ...) \
73 enum {_ZFP_ZFObjectCanAlloc = 1}; \
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); \
81 static void _ZFP_Obj_dtor(ZF_IN ZFObject *obj) { \
82 zfpoolDelete(_ZFP_ObjCastInternal(zfself *, obj)); \
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 \
95 &zfself::_ZFP_Obj_ctor, \
96 &zfself::_ZFP_Obj_dtor, \
97 &zfself::_ZFP_Obj_initImplCk \
101#define _ZFP_ZFOBJECT_DECLARE_ABSTRACT(ChildClass, SuperClass, OuterClass, ...) \
103 typedef enum {_ZFP_ZFObjectCanAlloc = 0} _ZFP_ZFObjectCanAllocChecker; \
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), \
116 &zfself::_ZFP_Obj_initImplCk \
118 return _holder.cls; \
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) \
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__) \
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) \
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__) \
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__) \
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(); \
220 ZF_STATIC_REGISTER_END(regSig)
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__)
229#define _ZFP_ZFOBJECT_REGISTER_clsSig_EXPAND(T) T::
245#define ZFOBJECT_PRIVATE_ALLOC(...) \
247 enum {_ZFP_ZFObjectCanAllocPublic = 0}; \
254#define ZFOBJECT_ON_INIT_INLINE_1( \
257 ZFMETHOD_INLINE_DETAIL_1( \
258 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
260 , _ZFP_MtdP_EXPAND(ZFMP_0) \
263#define ZFOBJECT_ON_INIT_DECLARE_1( \
266 ZFMETHOD_DECLARE_DETAIL_1( \
267 protected, ZFMethodTypeVirtual, \
269 , _ZFP_MtdP_EXPAND(ZFMP_0) \
272#define ZFOBJECT_ON_INIT_DEFINE_1(OwnerClass \
275 ZFMETHOD_DEFINE_1(OwnerClass, void, objectOnInit \
276 , _ZFP_MtdP_EXPAND(ZFMP_0) \
279#define ZFOBJECT_ON_INIT_INLINE_2( \
283 ZFMETHOD_INLINE_DETAIL_2( \
284 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
286 , _ZFP_MtdP_EXPAND(ZFMP_0) \
287 , _ZFP_MtdP_EXPAND(ZFMP_1) \
290#define ZFOBJECT_ON_INIT_DECLARE_2( \
294 ZFMETHOD_DECLARE_DETAIL_2( \
295 protected, ZFMethodTypeVirtual, \
297 , _ZFP_MtdP_EXPAND(ZFMP_0) \
298 , _ZFP_MtdP_EXPAND(ZFMP_1) \
301#define ZFOBJECT_ON_INIT_DEFINE_2(OwnerClass \
305 ZFMETHOD_DEFINE_2(OwnerClass, void, objectOnInit \
306 , _ZFP_MtdP_EXPAND(ZFMP_0) \
307 , _ZFP_MtdP_EXPAND(ZFMP_1) \
310#define ZFOBJECT_ON_INIT_INLINE_3( \
315 ZFMETHOD_INLINE_DETAIL_3( \
316 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
318 , _ZFP_MtdP_EXPAND(ZFMP_0) \
319 , _ZFP_MtdP_EXPAND(ZFMP_1) \
320 , _ZFP_MtdP_EXPAND(ZFMP_2) \
323#define ZFOBJECT_ON_INIT_DECLARE_3( \
328 ZFMETHOD_DECLARE_DETAIL_3( \
329 protected, ZFMethodTypeVirtual, \
331 , _ZFP_MtdP_EXPAND(ZFMP_0) \
332 , _ZFP_MtdP_EXPAND(ZFMP_1) \
333 , _ZFP_MtdP_EXPAND(ZFMP_2) \
336#define ZFOBJECT_ON_INIT_DEFINE_3(OwnerClass \
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) \
347#define ZFOBJECT_ON_INIT_INLINE_4( \
353 ZFMETHOD_INLINE_DETAIL_4( \
354 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
356 , _ZFP_MtdP_EXPAND(ZFMP_0) \
357 , _ZFP_MtdP_EXPAND(ZFMP_1) \
358 , _ZFP_MtdP_EXPAND(ZFMP_2) \
359 , _ZFP_MtdP_EXPAND(ZFMP_3) \
362#define ZFOBJECT_ON_INIT_DECLARE_4( \
368 ZFMETHOD_DECLARE_DETAIL_4( \
369 protected, ZFMethodTypeVirtual, \
371 , _ZFP_MtdP_EXPAND(ZFMP_0) \
372 , _ZFP_MtdP_EXPAND(ZFMP_1) \
373 , _ZFP_MtdP_EXPAND(ZFMP_2) \
374 , _ZFP_MtdP_EXPAND(ZFMP_3) \
377#define ZFOBJECT_ON_INIT_DEFINE_4(OwnerClass \
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) \
390#define ZFOBJECT_ON_INIT_INLINE_5( \
397 ZFMETHOD_INLINE_DETAIL_5( \
398 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
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) \
407#define ZFOBJECT_ON_INIT_DECLARE_5( \
414 ZFMETHOD_DECLARE_DETAIL_5( \
415 protected, ZFMethodTypeVirtual, \
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) \
424#define ZFOBJECT_ON_INIT_DEFINE_5(OwnerClass \
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) \
439#define ZFOBJECT_ON_INIT_INLINE_6( \
447 ZFMETHOD_INLINE_DETAIL_6( \
448 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
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) \
458#define ZFOBJECT_ON_INIT_DECLARE_6( \
466 ZFMETHOD_DECLARE_DETAIL_6( \
467 protected, ZFMethodTypeVirtual, \
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) \
477#define ZFOBJECT_ON_INIT_DEFINE_6(OwnerClass \
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) \
494#define ZFOBJECT_ON_INIT_INLINE_7( \
503 ZFMETHOD_INLINE_DETAIL_7( \
504 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
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) \
515#define ZFOBJECT_ON_INIT_DECLARE_7( \
524 ZFMETHOD_DECLARE_DETAIL_7( \
525 protected, ZFMethodTypeVirtual, \
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) \
536#define ZFOBJECT_ON_INIT_DEFINE_7(OwnerClass \
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) \
555#define ZFOBJECT_ON_INIT_INLINE_8( \
565 ZFMETHOD_INLINE_DETAIL_8( \
566 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
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) \
578#define ZFOBJECT_ON_INIT_DECLARE_8( \
588 ZFMETHOD_DECLARE_DETAIL_8( \
589 protected, ZFMethodTypeVirtual, \
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) \
601#define ZFOBJECT_ON_INIT_DEFINE_8(OwnerClass \
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) \
626#define ZFOBJECT_ON_INIT_USER_REGISTER_1(methodInvokerAction, ownerClassSig \
629 ZFMETHOD_USER_REGISTER_DETAIL_1({ \
630 methodInvokerAction \
632 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
634 , _ZFP_MtdP_EXPAND(ZFMP_0) \
637#define ZFOBJECT_ON_INIT_USER_REGISTER_2(methodInvokerAction, ownerClassSig \
641 ZFMETHOD_USER_REGISTER_DETAIL_2({ \
642 methodInvokerAction \
644 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
646 , _ZFP_MtdP_EXPAND(ZFMP_0) \
647 , _ZFP_MtdP_EXPAND(ZFMP_1) \
650#define ZFOBJECT_ON_INIT_USER_REGISTER_3(methodInvokerAction, ownerClassSig \
655 ZFMETHOD_USER_REGISTER_DETAIL_3({ \
656 methodInvokerAction \
658 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
660 , _ZFP_MtdP_EXPAND(ZFMP_0) \
661 , _ZFP_MtdP_EXPAND(ZFMP_1) \
662 , _ZFP_MtdP_EXPAND(ZFMP_2) \
665#define ZFOBJECT_ON_INIT_USER_REGISTER_4(methodInvokerAction, ownerClassSig \
671 ZFMETHOD_USER_REGISTER_DETAIL_4({ \
672 methodInvokerAction \
674 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
676 , _ZFP_MtdP_EXPAND(ZFMP_0) \
677 , _ZFP_MtdP_EXPAND(ZFMP_1) \
678 , _ZFP_MtdP_EXPAND(ZFMP_2) \
679 , _ZFP_MtdP_EXPAND(ZFMP_3) \
682#define ZFOBJECT_ON_INIT_USER_REGISTER_5(methodInvokerAction, ownerClassSig \
689 ZFMETHOD_USER_REGISTER_DETAIL_5({ \
690 methodInvokerAction \
692 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
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) \
701#define ZFOBJECT_ON_INIT_USER_REGISTER_6(methodInvokerAction, ownerClassSig \
709 ZFMETHOD_USER_REGISTER_DETAIL_6({ \
710 methodInvokerAction \
712 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
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) \
722#define ZFOBJECT_ON_INIT_USER_REGISTER_7(methodInvokerAction, ownerClassSig \
731 ZFMETHOD_USER_REGISTER_DETAIL_7({ \
732 methodInvokerAction \
734 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
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) \
745#define ZFOBJECT_ON_INIT_USER_REGISTER_8(methodInvokerAction, ownerClassSig \
755 ZFMETHOD_USER_REGISTER_DETAIL_8({ \
756 methodInvokerAction \
758 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
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) \
774#define ZFObjectOnInitUserRegister_1(resultMethod, methodInvokerAction, ownerClass \
777 ZFMethodUserRegisterDetail_1(resultMethod, { \
778 methodInvokerAction \
779 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
780 , _ZFP_MtdP_EXPAND(ZFMP_0) \
783#define ZFObjectOnInitUserRegister_2(resultMethod, methodInvokerAction, ownerClass \
787 ZFMethodUserRegisterDetail_2(resultMethod, { \
788 methodInvokerAction \
789 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
790 , _ZFP_MtdP_EXPAND(ZFMP_0) \
791 , _ZFP_MtdP_EXPAND(ZFMP_1) \
794#define ZFObjectOnInitUserRegister_3(resultMethod, methodInvokerAction, ownerClass \
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) \
807#define ZFObjectOnInitUserRegister_4(resultMethod, methodInvokerAction, ownerClass \
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) \
822#define ZFObjectOnInitUserRegister_5(resultMethod, methodInvokerAction, ownerClass \
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) \
839#define ZFObjectOnInitUserRegister_6(resultMethod, methodInvokerAction, ownerClass \
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) \
858#define ZFObjectOnInitUserRegister_7(resultMethod, methodInvokerAction, ownerClass \
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) \
879#define ZFObjectOnInitUserRegister_8(resultMethod, methodInvokerAction, ownerClass \
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) \
#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