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->classDynamic() ? this->classDynamic() : zfself::ClassData(); \
62 static void _ZFP_ObjI_regCk(ZF_IN ZFClass *cls) { \
63 if(!cls->_ZFP_ZFClass_interfaceHasRegisterCk()) { \
64 cls->_ZFP_ZFClass_interfaceHasRegisterCk(zftrue); \
65 if(zfself::_ZFP_ObjI_reg != zfsuper::_ZFP_ObjI_reg) { \
66 zfself::_ZFP_ObjI_reg(cls); \
71#define _ZFP_ZFOBJECT_DECLARE_OBJECT(ChildClass, SuperClass, OuterClass, ...) \
73 enum {_ZFP_ZFObjectCanAlloc = 1}; \
75 zfpoolDeclareFriend() \
76 friend zfclassFwd _ZFP_ObjACk<zfself, 0>; \
77 friend zfclassFwd _ZFP_ObjACk<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 h( \
87 ZF_NAMESPACE_CURRENT() \
88 , zftext(#ChildClass) \
89 , zfsuper::ClassData() \
90 , OuterClass::ClassData() \
91 , (zfself::_ZFP_ZFObjectCanAllocPublic != 0) \
92 , &zfself::_ZFP_Obj_ctor \
93 , &zfself::_ZFP_Obj_dtor \
94 , &zfself::_ZFP_ObjI_regCk \
98#define _ZFP_ZFOBJECT_DECLARE_ABSTRACT(ChildClass, SuperClass, OuterClass, ...) \
100 typedef enum {_ZFP_ZFObjectCanAlloc = 0} _ZFP_ZFObjectCanAllocChecker; \
103 static const ZFClass *ClassData(void) { \
104 static _ZFP_ZFClassRegisterHolder h( \
105 ZF_NAMESPACE_CURRENT() \
106 , zftext(#ChildClass) \
107 , zfsuper::ClassData() \
108 , OuterClass::ClassData() \
109 , (zfself::_ZFP_ZFObjectCanAllocPublic != 0) \
112 , &zfself::_ZFP_ObjI_regCk \
122#define ZFOBJECT_DECLARE(ChildClass, SuperClass, ...) \
123 _ZFP_ZFOBJECT_DECLARE(ChildClass, SuperClass) \
124 ZFM_VA_APPEND(_ZFP_ZFOBJECT_DECLARE_OBJECT, _ZFP_Obj_Base, ChildClass, SuperClass, ##__VA_ARGS__) \
125 _ZFP_ZFOBJECT_DECLARE_PROTECTED_CONSTRUCTOR(ChildClass, SuperClass) \
138#define ZFOBJECT_DECLARE_WITH_CUSTOM_CTOR(ChildClass, SuperClass, ...) \
139 _ZFP_ZFOBJECT_DECLARE(ChildClass, SuperClass) \
140 ZFM_VA_APPEND(_ZFP_ZFOBJECT_DECLARE_OBJECT, _ZFP_Obj_Base, ChildClass, SuperClass, ##__VA_ARGS__) \
148#define ZFOBJECT_DECLARE_ABSTRACT(ChildClass, SuperClass, ...) \
149 _ZFP_ZFOBJECT_DECLARE(ChildClass, SuperClass) \
150 ZFM_VA_APPEND(_ZFP_ZFOBJECT_DECLARE_ABSTRACT, _ZFP_Obj_Base, ChildClass, SuperClass, ##__VA_ARGS__) \
151 _ZFP_ZFOBJECT_DECLARE_PROTECTED_CONSTRUCTOR(ChildClass, SuperClass) \
156#define ZFOBJECT_DECLARE_ABSTRACT_WITH_CUSTOM_CTOR(ChildClass, SuperClass, ...) \
157 _ZFP_ZFOBJECT_DECLARE(ChildClass, SuperClass) \
158 ZFM_VA_APPEND(_ZFP_ZFOBJECT_DECLARE_ABSTRACT, _ZFP_Obj_Base, ChildClass, SuperClass, ##__VA_ARGS__) \
205#define ZFOBJECT_REGISTER(T_ZFObject, ...) \
206 _ZFP_ZFOBJECT_REGISTER( \
207 _ZFP_ZFOBJECT_REGISTER_regSig(ZFM_PARAM_NUM(T_ZFObject, ##__VA_ARGS__), T_ZFObject, ##__VA_ARGS__), \
208 ZFM_FIX_PARAM(_ZFP_ZFOBJECT_REGISTER_clsSig_EXPAND, ZFM_EMPTY, T_ZFObject, ##__VA_ARGS__) \
210#define _ZFP_ZFOBJECT_REGISTER(regSig, clsSig) \
211 _ZFP_ZFOBJECT_REGISTER_(regSig, clsSig)
212#define _ZFP_ZFOBJECT_REGISTER_(regSig, clsSig) \
213 ZF_STATIC_REGISTER_INIT(regSig) { \
214 clsSig ClassData(); \
216 ZF_STATIC_REGISTER_END(regSig)
218#define _ZFP_ZFOBJECT_REGISTER_regSig_1(T0) ObjR_##T0
219#define _ZFP_ZFOBJECT_REGISTER_regSig_2(T0, T1) ObjR_##T0##_##T1
220#define _ZFP_ZFOBJECT_REGISTER_regSig_3(T0, T1, T2) ObjR_##T0##_##T1##_##T2
221#define _ZFP_ZFOBJECT_REGISTER_regSig_4(T0, T1, T2, T3) ObjR_##T0##_##T1##_##T2##_##T3
222#define _ZFP_ZFOBJECT_REGISTER_regSig_(N, T, ...) _ZFP_ZFOBJECT_REGISTER_regSig_##N(T, ##__VA_ARGS__)
223#define _ZFP_ZFOBJECT_REGISTER_regSig(N, T, ...) _ZFP_ZFOBJECT_REGISTER_regSig_(N, T, ##__VA_ARGS__)
225#define _ZFP_ZFOBJECT_REGISTER_clsSig_EXPAND(T) T::
241#define ZFOBJECT_PRIVATE_ALLOC(...) \
243 enum {_ZFP_ZFObjectCanAllocPublic = 0}; \
250#define ZFOBJECT_ON_INIT_INLINE_1( \
253 ZFMETHOD_INLINE_DETAIL_1( \
254 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
256 , _ZFP_mP_EXPAND(ZFMP_0) \
259#define ZFOBJECT_ON_INIT_DECLARE_1( \
262 ZFMETHOD_DECLARE_DETAIL_1( \
263 protected, ZFMethodTypeVirtual, \
265 , _ZFP_mP_EXPAND(ZFMP_0) \
268#define ZFOBJECT_ON_INIT_DEFINE_1(OwnerClass \
271 ZFMETHOD_DEFINE_1(OwnerClass, void, objectOnInit \
272 , _ZFP_mP_EXPAND(ZFMP_0) \
275#define ZFOBJECT_ON_INIT_INLINE_2( \
279 ZFMETHOD_INLINE_DETAIL_2( \
280 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
282 , _ZFP_mP_EXPAND(ZFMP_0) \
283 , _ZFP_mP_EXPAND(ZFMP_1) \
286#define ZFOBJECT_ON_INIT_DECLARE_2( \
290 ZFMETHOD_DECLARE_DETAIL_2( \
291 protected, ZFMethodTypeVirtual, \
293 , _ZFP_mP_EXPAND(ZFMP_0) \
294 , _ZFP_mP_EXPAND(ZFMP_1) \
297#define ZFOBJECT_ON_INIT_DEFINE_2(OwnerClass \
301 ZFMETHOD_DEFINE_2(OwnerClass, void, objectOnInit \
302 , _ZFP_mP_EXPAND(ZFMP_0) \
303 , _ZFP_mP_EXPAND(ZFMP_1) \
306#define ZFOBJECT_ON_INIT_INLINE_3( \
311 ZFMETHOD_INLINE_DETAIL_3( \
312 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
314 , _ZFP_mP_EXPAND(ZFMP_0) \
315 , _ZFP_mP_EXPAND(ZFMP_1) \
316 , _ZFP_mP_EXPAND(ZFMP_2) \
319#define ZFOBJECT_ON_INIT_DECLARE_3( \
324 ZFMETHOD_DECLARE_DETAIL_3( \
325 protected, ZFMethodTypeVirtual, \
327 , _ZFP_mP_EXPAND(ZFMP_0) \
328 , _ZFP_mP_EXPAND(ZFMP_1) \
329 , _ZFP_mP_EXPAND(ZFMP_2) \
332#define ZFOBJECT_ON_INIT_DEFINE_3(OwnerClass \
337 ZFMETHOD_DEFINE_3(OwnerClass, void, objectOnInit \
338 , _ZFP_mP_EXPAND(ZFMP_0) \
339 , _ZFP_mP_EXPAND(ZFMP_1) \
340 , _ZFP_mP_EXPAND(ZFMP_2) \
343#define ZFOBJECT_ON_INIT_INLINE_4( \
349 ZFMETHOD_INLINE_DETAIL_4( \
350 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
352 , _ZFP_mP_EXPAND(ZFMP_0) \
353 , _ZFP_mP_EXPAND(ZFMP_1) \
354 , _ZFP_mP_EXPAND(ZFMP_2) \
355 , _ZFP_mP_EXPAND(ZFMP_3) \
358#define ZFOBJECT_ON_INIT_DECLARE_4( \
364 ZFMETHOD_DECLARE_DETAIL_4( \
365 protected, ZFMethodTypeVirtual, \
367 , _ZFP_mP_EXPAND(ZFMP_0) \
368 , _ZFP_mP_EXPAND(ZFMP_1) \
369 , _ZFP_mP_EXPAND(ZFMP_2) \
370 , _ZFP_mP_EXPAND(ZFMP_3) \
373#define ZFOBJECT_ON_INIT_DEFINE_4(OwnerClass \
379 ZFMETHOD_DEFINE_4(OwnerClass, void, objectOnInit \
380 , _ZFP_mP_EXPAND(ZFMP_0) \
381 , _ZFP_mP_EXPAND(ZFMP_1) \
382 , _ZFP_mP_EXPAND(ZFMP_2) \
383 , _ZFP_mP_EXPAND(ZFMP_3) \
386#define ZFOBJECT_ON_INIT_INLINE_5( \
393 ZFMETHOD_INLINE_DETAIL_5( \
394 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
396 , _ZFP_mP_EXPAND(ZFMP_0) \
397 , _ZFP_mP_EXPAND(ZFMP_1) \
398 , _ZFP_mP_EXPAND(ZFMP_2) \
399 , _ZFP_mP_EXPAND(ZFMP_3) \
400 , _ZFP_mP_EXPAND(ZFMP_4) \
403#define ZFOBJECT_ON_INIT_DECLARE_5( \
410 ZFMETHOD_DECLARE_DETAIL_5( \
411 protected, ZFMethodTypeVirtual, \
413 , _ZFP_mP_EXPAND(ZFMP_0) \
414 , _ZFP_mP_EXPAND(ZFMP_1) \
415 , _ZFP_mP_EXPAND(ZFMP_2) \
416 , _ZFP_mP_EXPAND(ZFMP_3) \
417 , _ZFP_mP_EXPAND(ZFMP_4) \
420#define ZFOBJECT_ON_INIT_DEFINE_5(OwnerClass \
427 ZFMETHOD_DEFINE_5(OwnerClass, void, objectOnInit \
428 , _ZFP_mP_EXPAND(ZFMP_0) \
429 , _ZFP_mP_EXPAND(ZFMP_1) \
430 , _ZFP_mP_EXPAND(ZFMP_2) \
431 , _ZFP_mP_EXPAND(ZFMP_3) \
432 , _ZFP_mP_EXPAND(ZFMP_4) \
435#define ZFOBJECT_ON_INIT_INLINE_6( \
443 ZFMETHOD_INLINE_DETAIL_6( \
444 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
446 , _ZFP_mP_EXPAND(ZFMP_0) \
447 , _ZFP_mP_EXPAND(ZFMP_1) \
448 , _ZFP_mP_EXPAND(ZFMP_2) \
449 , _ZFP_mP_EXPAND(ZFMP_3) \
450 , _ZFP_mP_EXPAND(ZFMP_4) \
451 , _ZFP_mP_EXPAND(ZFMP_5) \
454#define ZFOBJECT_ON_INIT_DECLARE_6( \
462 ZFMETHOD_DECLARE_DETAIL_6( \
463 protected, ZFMethodTypeVirtual, \
465 , _ZFP_mP_EXPAND(ZFMP_0) \
466 , _ZFP_mP_EXPAND(ZFMP_1) \
467 , _ZFP_mP_EXPAND(ZFMP_2) \
468 , _ZFP_mP_EXPAND(ZFMP_3) \
469 , _ZFP_mP_EXPAND(ZFMP_4) \
470 , _ZFP_mP_EXPAND(ZFMP_5) \
473#define ZFOBJECT_ON_INIT_DEFINE_6(OwnerClass \
481 ZFMETHOD_DEFINE_6(OwnerClass, void, objectOnInit \
482 , _ZFP_mP_EXPAND(ZFMP_0) \
483 , _ZFP_mP_EXPAND(ZFMP_1) \
484 , _ZFP_mP_EXPAND(ZFMP_2) \
485 , _ZFP_mP_EXPAND(ZFMP_3) \
486 , _ZFP_mP_EXPAND(ZFMP_4) \
487 , _ZFP_mP_EXPAND(ZFMP_5) \
490#define ZFOBJECT_ON_INIT_INLINE_7( \
499 ZFMETHOD_INLINE_DETAIL_7( \
500 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
502 , _ZFP_mP_EXPAND(ZFMP_0) \
503 , _ZFP_mP_EXPAND(ZFMP_1) \
504 , _ZFP_mP_EXPAND(ZFMP_2) \
505 , _ZFP_mP_EXPAND(ZFMP_3) \
506 , _ZFP_mP_EXPAND(ZFMP_4) \
507 , _ZFP_mP_EXPAND(ZFMP_5) \
508 , _ZFP_mP_EXPAND(ZFMP_6) \
511#define ZFOBJECT_ON_INIT_DECLARE_7( \
520 ZFMETHOD_DECLARE_DETAIL_7( \
521 protected, ZFMethodTypeVirtual, \
523 , _ZFP_mP_EXPAND(ZFMP_0) \
524 , _ZFP_mP_EXPAND(ZFMP_1) \
525 , _ZFP_mP_EXPAND(ZFMP_2) \
526 , _ZFP_mP_EXPAND(ZFMP_3) \
527 , _ZFP_mP_EXPAND(ZFMP_4) \
528 , _ZFP_mP_EXPAND(ZFMP_5) \
529 , _ZFP_mP_EXPAND(ZFMP_6) \
532#define ZFOBJECT_ON_INIT_DEFINE_7(OwnerClass \
541 ZFMETHOD_DEFINE_7(OwnerClass, void, objectOnInit \
542 , _ZFP_mP_EXPAND(ZFMP_0) \
543 , _ZFP_mP_EXPAND(ZFMP_1) \
544 , _ZFP_mP_EXPAND(ZFMP_2) \
545 , _ZFP_mP_EXPAND(ZFMP_3) \
546 , _ZFP_mP_EXPAND(ZFMP_4) \
547 , _ZFP_mP_EXPAND(ZFMP_5) \
548 , _ZFP_mP_EXPAND(ZFMP_6) \
551#define ZFOBJECT_ON_INIT_INLINE_8( \
561 ZFMETHOD_INLINE_DETAIL_8( \
562 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
564 , _ZFP_mP_EXPAND(ZFMP_0) \
565 , _ZFP_mP_EXPAND(ZFMP_1) \
566 , _ZFP_mP_EXPAND(ZFMP_2) \
567 , _ZFP_mP_EXPAND(ZFMP_3) \
568 , _ZFP_mP_EXPAND(ZFMP_4) \
569 , _ZFP_mP_EXPAND(ZFMP_5) \
570 , _ZFP_mP_EXPAND(ZFMP_6) \
571 , _ZFP_mP_EXPAND(ZFMP_7) \
574#define ZFOBJECT_ON_INIT_DECLARE_8( \
584 ZFMETHOD_DECLARE_DETAIL_8( \
585 protected, ZFMethodTypeVirtual, \
587 , _ZFP_mP_EXPAND(ZFMP_0) \
588 , _ZFP_mP_EXPAND(ZFMP_1) \
589 , _ZFP_mP_EXPAND(ZFMP_2) \
590 , _ZFP_mP_EXPAND(ZFMP_3) \
591 , _ZFP_mP_EXPAND(ZFMP_4) \
592 , _ZFP_mP_EXPAND(ZFMP_5) \
593 , _ZFP_mP_EXPAND(ZFMP_6) \
594 , _ZFP_mP_EXPAND(ZFMP_7) \
597#define ZFOBJECT_ON_INIT_DEFINE_8(OwnerClass \
607 ZFMETHOD_DEFINE_8(OwnerClass, void, objectOnInit \
608 , _ZFP_mP_EXPAND(ZFMP_0) \
609 , _ZFP_mP_EXPAND(ZFMP_1) \
610 , _ZFP_mP_EXPAND(ZFMP_2) \
611 , _ZFP_mP_EXPAND(ZFMP_3) \
612 , _ZFP_mP_EXPAND(ZFMP_4) \
613 , _ZFP_mP_EXPAND(ZFMP_5) \
614 , _ZFP_mP_EXPAND(ZFMP_6) \
615 , _ZFP_mP_EXPAND(ZFMP_7) \
622#define ZFOBJECT_ON_INIT_USER_REGISTER_1(ownerClassSig \
625 ZFMETHOD_USER_REGISTER_DETAIL_1(ownerClassSig, \
626 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
628 , _ZFP_mP_EXPAND(ZFMP_0) \
631#define ZFOBJECT_ON_INIT_USER_REGISTER_2(ownerClassSig \
635 ZFMETHOD_USER_REGISTER_DETAIL_2(ownerClassSig, \
636 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
638 , _ZFP_mP_EXPAND(ZFMP_0) \
639 , _ZFP_mP_EXPAND(ZFMP_1) \
642#define ZFOBJECT_ON_INIT_USER_REGISTER_3(ownerClassSig \
647 ZFMETHOD_USER_REGISTER_DETAIL_3(ownerClassSig, \
648 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
650 , _ZFP_mP_EXPAND(ZFMP_0) \
651 , _ZFP_mP_EXPAND(ZFMP_1) \
652 , _ZFP_mP_EXPAND(ZFMP_2) \
655#define ZFOBJECT_ON_INIT_USER_REGISTER_4(ownerClassSig \
661 ZFMETHOD_USER_REGISTER_DETAIL_4(ownerClassSig, \
662 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
664 , _ZFP_mP_EXPAND(ZFMP_0) \
665 , _ZFP_mP_EXPAND(ZFMP_1) \
666 , _ZFP_mP_EXPAND(ZFMP_2) \
667 , _ZFP_mP_EXPAND(ZFMP_3) \
670#define ZFOBJECT_ON_INIT_USER_REGISTER_5(ownerClassSig \
677 ZFMETHOD_USER_REGISTER_DETAIL_5(ownerClassSig, \
678 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
680 , _ZFP_mP_EXPAND(ZFMP_0) \
681 , _ZFP_mP_EXPAND(ZFMP_1) \
682 , _ZFP_mP_EXPAND(ZFMP_2) \
683 , _ZFP_mP_EXPAND(ZFMP_3) \
684 , _ZFP_mP_EXPAND(ZFMP_4) \
687#define ZFOBJECT_ON_INIT_USER_REGISTER_6(ownerClassSig \
695 ZFMETHOD_USER_REGISTER_DETAIL_6(ownerClassSig, \
696 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
698 , _ZFP_mP_EXPAND(ZFMP_0) \
699 , _ZFP_mP_EXPAND(ZFMP_1) \
700 , _ZFP_mP_EXPAND(ZFMP_2) \
701 , _ZFP_mP_EXPAND(ZFMP_3) \
702 , _ZFP_mP_EXPAND(ZFMP_4) \
703 , _ZFP_mP_EXPAND(ZFMP_5) \
706#define ZFOBJECT_ON_INIT_USER_REGISTER_7(ownerClassSig \
715 ZFMETHOD_USER_REGISTER_DETAIL_7(ownerClassSig, \
716 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
718 , _ZFP_mP_EXPAND(ZFMP_0) \
719 , _ZFP_mP_EXPAND(ZFMP_1) \
720 , _ZFP_mP_EXPAND(ZFMP_2) \
721 , _ZFP_mP_EXPAND(ZFMP_3) \
722 , _ZFP_mP_EXPAND(ZFMP_4) \
723 , _ZFP_mP_EXPAND(ZFMP_5) \
724 , _ZFP_mP_EXPAND(ZFMP_6) \
727#define ZFOBJECT_ON_INIT_USER_REGISTER_8(ownerClassSig \
737 ZFMETHOD_USER_REGISTER_DETAIL_8(ownerClassSig, \
738 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
740 , _ZFP_mP_EXPAND(ZFMP_0) \
741 , _ZFP_mP_EXPAND(ZFMP_1) \
742 , _ZFP_mP_EXPAND(ZFMP_2) \
743 , _ZFP_mP_EXPAND(ZFMP_3) \
744 , _ZFP_mP_EXPAND(ZFMP_4) \
745 , _ZFP_mP_EXPAND(ZFMP_5) \
746 , _ZFP_mP_EXPAND(ZFMP_6) \
747 , _ZFP_mP_EXPAND(ZFMP_7) \
754#define ZFObjectOnInitUserRegister_1(resultMethod, methodInvokerAction, ownerClass \
757 ZFMethodUserRegisterDetail_1(resultMethod, { \
758 methodInvokerAction \
759 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
760 , _ZFP_mP_EXPAND(ZFMP_0) \
763#define ZFObjectOnInitUserRegister_2(resultMethod, methodInvokerAction, ownerClass \
767 ZFMethodUserRegisterDetail_2(resultMethod, { \
768 methodInvokerAction \
769 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
770 , _ZFP_mP_EXPAND(ZFMP_0) \
771 , _ZFP_mP_EXPAND(ZFMP_1) \
774#define ZFObjectOnInitUserRegister_3(resultMethod, methodInvokerAction, ownerClass \
779 ZFMethodUserRegisterDetail_3(resultMethod, { \
780 methodInvokerAction \
781 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
782 , _ZFP_mP_EXPAND(ZFMP_0) \
783 , _ZFP_mP_EXPAND(ZFMP_1) \
784 , _ZFP_mP_EXPAND(ZFMP_2) \
787#define ZFObjectOnInitUserRegister_4(resultMethod, methodInvokerAction, ownerClass \
793 ZFMethodUserRegisterDetail_4(resultMethod, { \
794 methodInvokerAction \
795 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
796 , _ZFP_mP_EXPAND(ZFMP_0) \
797 , _ZFP_mP_EXPAND(ZFMP_1) \
798 , _ZFP_mP_EXPAND(ZFMP_2) \
799 , _ZFP_mP_EXPAND(ZFMP_3) \
802#define ZFObjectOnInitUserRegister_5(resultMethod, methodInvokerAction, ownerClass \
809 ZFMethodUserRegisterDetail_5(resultMethod, { \
810 methodInvokerAction \
811 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
812 , _ZFP_mP_EXPAND(ZFMP_0) \
813 , _ZFP_mP_EXPAND(ZFMP_1) \
814 , _ZFP_mP_EXPAND(ZFMP_2) \
815 , _ZFP_mP_EXPAND(ZFMP_3) \
816 , _ZFP_mP_EXPAND(ZFMP_4) \
819#define ZFObjectOnInitUserRegister_6(resultMethod, methodInvokerAction, ownerClass \
827 ZFMethodUserRegisterDetail_6(resultMethod, { \
828 methodInvokerAction \
829 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
830 , _ZFP_mP_EXPAND(ZFMP_0) \
831 , _ZFP_mP_EXPAND(ZFMP_1) \
832 , _ZFP_mP_EXPAND(ZFMP_2) \
833 , _ZFP_mP_EXPAND(ZFMP_3) \
834 , _ZFP_mP_EXPAND(ZFMP_4) \
835 , _ZFP_mP_EXPAND(ZFMP_5) \
838#define ZFObjectOnInitUserRegister_7(resultMethod, methodInvokerAction, ownerClass \
847 ZFMethodUserRegisterDetail_7(resultMethod, { \
848 methodInvokerAction \
849 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
850 , _ZFP_mP_EXPAND(ZFMP_0) \
851 , _ZFP_mP_EXPAND(ZFMP_1) \
852 , _ZFP_mP_EXPAND(ZFMP_2) \
853 , _ZFP_mP_EXPAND(ZFMP_3) \
854 , _ZFP_mP_EXPAND(ZFMP_4) \
855 , _ZFP_mP_EXPAND(ZFMP_5) \
856 , _ZFP_mP_EXPAND(ZFMP_6) \
859#define ZFObjectOnInitUserRegister_8(resultMethod, methodInvokerAction, ownerClass \
869 ZFMethodUserRegisterDetail_8(resultMethod, { \
870 methodInvokerAction \
871 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
872 , _ZFP_mP_EXPAND(ZFMP_0) \
873 , _ZFP_mP_EXPAND(ZFMP_1) \
874 , _ZFP_mP_EXPAND(ZFMP_2) \
875 , _ZFP_mP_EXPAND(ZFMP_3) \
876 , _ZFP_mP_EXPAND(ZFMP_4) \
877 , _ZFP_mP_EXPAND(ZFMP_5) \
878 , _ZFP_mP_EXPAND(ZFMP_6) \
879 , _ZFP_mP_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:208
#define ZF_IN
dummy macro that shows the param used as required input
Definition ZFCoreTypeDef_ClassType.h:196
#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:63
listener as ZFCallback, mostly used by ZFObject::observerNotify
Definition ZFObjectObserver.h:30
util for ZFDynamic::method
Definition ZFMethodDynamicRegister.h:203
param for ZFMethodDynamicRegister
Definition ZFMethodDynamicRegister.h:102
reflectable method for ZFObject
Definition ZFMethod.h:252
util class to cast ZFObject types freely