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), \
113 &zfself::_ZFP_ObjI_regCk \
123#define ZFOBJECT_DECLARE(ChildClass, SuperClass, ...) \
124 _ZFP_ZFOBJECT_DECLARE(ChildClass, SuperClass) \
125 ZFM_VA_APPEND(_ZFP_ZFOBJECT_DECLARE_OBJECT, _ZFP_Obj_Base, ChildClass, SuperClass, ##__VA_ARGS__) \
126 _ZFP_ZFOBJECT_DECLARE_PROTECTED_CONSTRUCTOR(ChildClass, SuperClass) \
139#define ZFOBJECT_DECLARE_WITH_CUSTOM_CTOR(ChildClass, SuperClass, ...) \
140 _ZFP_ZFOBJECT_DECLARE(ChildClass, SuperClass) \
141 ZFM_VA_APPEND(_ZFP_ZFOBJECT_DECLARE_OBJECT, _ZFP_Obj_Base, ChildClass, SuperClass, ##__VA_ARGS__) \
149#define ZFOBJECT_DECLARE_ABSTRACT(ChildClass, SuperClass, ...) \
150 _ZFP_ZFOBJECT_DECLARE(ChildClass, SuperClass) \
151 ZFM_VA_APPEND(_ZFP_ZFOBJECT_DECLARE_ABSTRACT, _ZFP_Obj_Base, ChildClass, SuperClass, ##__VA_ARGS__) \
152 _ZFP_ZFOBJECT_DECLARE_PROTECTED_CONSTRUCTOR(ChildClass, SuperClass) \
157#define ZFOBJECT_DECLARE_ABSTRACT_WITH_CUSTOM_CTOR(ChildClass, SuperClass, ...) \
158 _ZFP_ZFOBJECT_DECLARE(ChildClass, SuperClass) \
159 ZFM_VA_APPEND(_ZFP_ZFOBJECT_DECLARE_ABSTRACT, _ZFP_Obj_Base, ChildClass, SuperClass, ##__VA_ARGS__) \
206#define ZFOBJECT_REGISTER(T_ZFObject, ...) \
207 _ZFP_ZFOBJECT_REGISTER( \
208 _ZFP_ZFOBJECT_REGISTER_regSig(ZFM_PARAM_NUM(T_ZFObject, ##__VA_ARGS__), T_ZFObject, ##__VA_ARGS__), \
209 ZFM_FIX_PARAM(_ZFP_ZFOBJECT_REGISTER_clsSig_EXPAND, ZFM_EMPTY, T_ZFObject, ##__VA_ARGS__) \
211#define _ZFP_ZFOBJECT_REGISTER(regSig, clsSig) \
212 _ZFP_ZFOBJECT_REGISTER_(regSig, clsSig)
213#define _ZFP_ZFOBJECT_REGISTER_(regSig, clsSig) \
214 ZF_STATIC_REGISTER_INIT(regSig) { \
215 clsSig ClassData(); \
217 ZF_STATIC_REGISTER_END(regSig)
219#define _ZFP_ZFOBJECT_REGISTER_regSig_1(T0) ObjR_##T0
220#define _ZFP_ZFOBJECT_REGISTER_regSig_2(T0, T1) ObjR_##T0##_##T1
221#define _ZFP_ZFOBJECT_REGISTER_regSig_3(T0, T1, T2) ObjR_##T0##_##T1##_##T2
222#define _ZFP_ZFOBJECT_REGISTER_regSig_4(T0, T1, T2, T3) ObjR_##T0##_##T1##_##T2##_##T3
223#define _ZFP_ZFOBJECT_REGISTER_regSig_(N, T, ...) _ZFP_ZFOBJECT_REGISTER_regSig_##N(T, ##__VA_ARGS__)
224#define _ZFP_ZFOBJECT_REGISTER_regSig(N, T, ...) _ZFP_ZFOBJECT_REGISTER_regSig_(N, T, ##__VA_ARGS__)
226#define _ZFP_ZFOBJECT_REGISTER_clsSig_EXPAND(T) T::
242#define ZFOBJECT_PRIVATE_ALLOC(...) \
244 enum {_ZFP_ZFObjectCanAllocPublic = 0}; \
251#define ZFOBJECT_ON_INIT_INLINE_1( \
254 ZFMETHOD_INLINE_DETAIL_1( \
255 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
257 , _ZFP_mP_EXPAND(ZFMP_0) \
260#define ZFOBJECT_ON_INIT_DECLARE_1( \
263 ZFMETHOD_DECLARE_DETAIL_1( \
264 protected, ZFMethodTypeVirtual, \
266 , _ZFP_mP_EXPAND(ZFMP_0) \
269#define ZFOBJECT_ON_INIT_DEFINE_1(OwnerClass \
272 ZFMETHOD_DEFINE_1(OwnerClass, void, objectOnInit \
273 , _ZFP_mP_EXPAND(ZFMP_0) \
276#define ZFOBJECT_ON_INIT_INLINE_2( \
280 ZFMETHOD_INLINE_DETAIL_2( \
281 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
283 , _ZFP_mP_EXPAND(ZFMP_0) \
284 , _ZFP_mP_EXPAND(ZFMP_1) \
287#define ZFOBJECT_ON_INIT_DECLARE_2( \
291 ZFMETHOD_DECLARE_DETAIL_2( \
292 protected, ZFMethodTypeVirtual, \
294 , _ZFP_mP_EXPAND(ZFMP_0) \
295 , _ZFP_mP_EXPAND(ZFMP_1) \
298#define ZFOBJECT_ON_INIT_DEFINE_2(OwnerClass \
302 ZFMETHOD_DEFINE_2(OwnerClass, void, objectOnInit \
303 , _ZFP_mP_EXPAND(ZFMP_0) \
304 , _ZFP_mP_EXPAND(ZFMP_1) \
307#define ZFOBJECT_ON_INIT_INLINE_3( \
312 ZFMETHOD_INLINE_DETAIL_3( \
313 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
315 , _ZFP_mP_EXPAND(ZFMP_0) \
316 , _ZFP_mP_EXPAND(ZFMP_1) \
317 , _ZFP_mP_EXPAND(ZFMP_2) \
320#define ZFOBJECT_ON_INIT_DECLARE_3( \
325 ZFMETHOD_DECLARE_DETAIL_3( \
326 protected, ZFMethodTypeVirtual, \
328 , _ZFP_mP_EXPAND(ZFMP_0) \
329 , _ZFP_mP_EXPAND(ZFMP_1) \
330 , _ZFP_mP_EXPAND(ZFMP_2) \
333#define ZFOBJECT_ON_INIT_DEFINE_3(OwnerClass \
338 ZFMETHOD_DEFINE_3(OwnerClass, void, objectOnInit \
339 , _ZFP_mP_EXPAND(ZFMP_0) \
340 , _ZFP_mP_EXPAND(ZFMP_1) \
341 , _ZFP_mP_EXPAND(ZFMP_2) \
344#define ZFOBJECT_ON_INIT_INLINE_4( \
350 ZFMETHOD_INLINE_DETAIL_4( \
351 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
353 , _ZFP_mP_EXPAND(ZFMP_0) \
354 , _ZFP_mP_EXPAND(ZFMP_1) \
355 , _ZFP_mP_EXPAND(ZFMP_2) \
356 , _ZFP_mP_EXPAND(ZFMP_3) \
359#define ZFOBJECT_ON_INIT_DECLARE_4( \
365 ZFMETHOD_DECLARE_DETAIL_4( \
366 protected, ZFMethodTypeVirtual, \
368 , _ZFP_mP_EXPAND(ZFMP_0) \
369 , _ZFP_mP_EXPAND(ZFMP_1) \
370 , _ZFP_mP_EXPAND(ZFMP_2) \
371 , _ZFP_mP_EXPAND(ZFMP_3) \
374#define ZFOBJECT_ON_INIT_DEFINE_4(OwnerClass \
380 ZFMETHOD_DEFINE_4(OwnerClass, void, objectOnInit \
381 , _ZFP_mP_EXPAND(ZFMP_0) \
382 , _ZFP_mP_EXPAND(ZFMP_1) \
383 , _ZFP_mP_EXPAND(ZFMP_2) \
384 , _ZFP_mP_EXPAND(ZFMP_3) \
387#define ZFOBJECT_ON_INIT_INLINE_5( \
394 ZFMETHOD_INLINE_DETAIL_5( \
395 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
397 , _ZFP_mP_EXPAND(ZFMP_0) \
398 , _ZFP_mP_EXPAND(ZFMP_1) \
399 , _ZFP_mP_EXPAND(ZFMP_2) \
400 , _ZFP_mP_EXPAND(ZFMP_3) \
401 , _ZFP_mP_EXPAND(ZFMP_4) \
404#define ZFOBJECT_ON_INIT_DECLARE_5( \
411 ZFMETHOD_DECLARE_DETAIL_5( \
412 protected, ZFMethodTypeVirtual, \
414 , _ZFP_mP_EXPAND(ZFMP_0) \
415 , _ZFP_mP_EXPAND(ZFMP_1) \
416 , _ZFP_mP_EXPAND(ZFMP_2) \
417 , _ZFP_mP_EXPAND(ZFMP_3) \
418 , _ZFP_mP_EXPAND(ZFMP_4) \
421#define ZFOBJECT_ON_INIT_DEFINE_5(OwnerClass \
428 ZFMETHOD_DEFINE_5(OwnerClass, void, objectOnInit \
429 , _ZFP_mP_EXPAND(ZFMP_0) \
430 , _ZFP_mP_EXPAND(ZFMP_1) \
431 , _ZFP_mP_EXPAND(ZFMP_2) \
432 , _ZFP_mP_EXPAND(ZFMP_3) \
433 , _ZFP_mP_EXPAND(ZFMP_4) \
436#define ZFOBJECT_ON_INIT_INLINE_6( \
444 ZFMETHOD_INLINE_DETAIL_6( \
445 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
447 , _ZFP_mP_EXPAND(ZFMP_0) \
448 , _ZFP_mP_EXPAND(ZFMP_1) \
449 , _ZFP_mP_EXPAND(ZFMP_2) \
450 , _ZFP_mP_EXPAND(ZFMP_3) \
451 , _ZFP_mP_EXPAND(ZFMP_4) \
452 , _ZFP_mP_EXPAND(ZFMP_5) \
455#define ZFOBJECT_ON_INIT_DECLARE_6( \
463 ZFMETHOD_DECLARE_DETAIL_6( \
464 protected, ZFMethodTypeVirtual, \
466 , _ZFP_mP_EXPAND(ZFMP_0) \
467 , _ZFP_mP_EXPAND(ZFMP_1) \
468 , _ZFP_mP_EXPAND(ZFMP_2) \
469 , _ZFP_mP_EXPAND(ZFMP_3) \
470 , _ZFP_mP_EXPAND(ZFMP_4) \
471 , _ZFP_mP_EXPAND(ZFMP_5) \
474#define ZFOBJECT_ON_INIT_DEFINE_6(OwnerClass \
482 ZFMETHOD_DEFINE_6(OwnerClass, void, objectOnInit \
483 , _ZFP_mP_EXPAND(ZFMP_0) \
484 , _ZFP_mP_EXPAND(ZFMP_1) \
485 , _ZFP_mP_EXPAND(ZFMP_2) \
486 , _ZFP_mP_EXPAND(ZFMP_3) \
487 , _ZFP_mP_EXPAND(ZFMP_4) \
488 , _ZFP_mP_EXPAND(ZFMP_5) \
491#define ZFOBJECT_ON_INIT_INLINE_7( \
500 ZFMETHOD_INLINE_DETAIL_7( \
501 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
503 , _ZFP_mP_EXPAND(ZFMP_0) \
504 , _ZFP_mP_EXPAND(ZFMP_1) \
505 , _ZFP_mP_EXPAND(ZFMP_2) \
506 , _ZFP_mP_EXPAND(ZFMP_3) \
507 , _ZFP_mP_EXPAND(ZFMP_4) \
508 , _ZFP_mP_EXPAND(ZFMP_5) \
509 , _ZFP_mP_EXPAND(ZFMP_6) \
512#define ZFOBJECT_ON_INIT_DECLARE_7( \
521 ZFMETHOD_DECLARE_DETAIL_7( \
522 protected, ZFMethodTypeVirtual, \
524 , _ZFP_mP_EXPAND(ZFMP_0) \
525 , _ZFP_mP_EXPAND(ZFMP_1) \
526 , _ZFP_mP_EXPAND(ZFMP_2) \
527 , _ZFP_mP_EXPAND(ZFMP_3) \
528 , _ZFP_mP_EXPAND(ZFMP_4) \
529 , _ZFP_mP_EXPAND(ZFMP_5) \
530 , _ZFP_mP_EXPAND(ZFMP_6) \
533#define ZFOBJECT_ON_INIT_DEFINE_7(OwnerClass \
542 ZFMETHOD_DEFINE_7(OwnerClass, void, objectOnInit \
543 , _ZFP_mP_EXPAND(ZFMP_0) \
544 , _ZFP_mP_EXPAND(ZFMP_1) \
545 , _ZFP_mP_EXPAND(ZFMP_2) \
546 , _ZFP_mP_EXPAND(ZFMP_3) \
547 , _ZFP_mP_EXPAND(ZFMP_4) \
548 , _ZFP_mP_EXPAND(ZFMP_5) \
549 , _ZFP_mP_EXPAND(ZFMP_6) \
552#define ZFOBJECT_ON_INIT_INLINE_8( \
562 ZFMETHOD_INLINE_DETAIL_8( \
563 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
565 , _ZFP_mP_EXPAND(ZFMP_0) \
566 , _ZFP_mP_EXPAND(ZFMP_1) \
567 , _ZFP_mP_EXPAND(ZFMP_2) \
568 , _ZFP_mP_EXPAND(ZFMP_3) \
569 , _ZFP_mP_EXPAND(ZFMP_4) \
570 , _ZFP_mP_EXPAND(ZFMP_5) \
571 , _ZFP_mP_EXPAND(ZFMP_6) \
572 , _ZFP_mP_EXPAND(ZFMP_7) \
575#define ZFOBJECT_ON_INIT_DECLARE_8( \
585 ZFMETHOD_DECLARE_DETAIL_8( \
586 protected, ZFMethodTypeVirtual, \
588 , _ZFP_mP_EXPAND(ZFMP_0) \
589 , _ZFP_mP_EXPAND(ZFMP_1) \
590 , _ZFP_mP_EXPAND(ZFMP_2) \
591 , _ZFP_mP_EXPAND(ZFMP_3) \
592 , _ZFP_mP_EXPAND(ZFMP_4) \
593 , _ZFP_mP_EXPAND(ZFMP_5) \
594 , _ZFP_mP_EXPAND(ZFMP_6) \
595 , _ZFP_mP_EXPAND(ZFMP_7) \
598#define ZFOBJECT_ON_INIT_DEFINE_8(OwnerClass \
608 ZFMETHOD_DEFINE_8(OwnerClass, void, objectOnInit \
609 , _ZFP_mP_EXPAND(ZFMP_0) \
610 , _ZFP_mP_EXPAND(ZFMP_1) \
611 , _ZFP_mP_EXPAND(ZFMP_2) \
612 , _ZFP_mP_EXPAND(ZFMP_3) \
613 , _ZFP_mP_EXPAND(ZFMP_4) \
614 , _ZFP_mP_EXPAND(ZFMP_5) \
615 , _ZFP_mP_EXPAND(ZFMP_6) \
616 , _ZFP_mP_EXPAND(ZFMP_7) \
623#define ZFOBJECT_ON_INIT_USER_REGISTER_1(ownerClassSig \
626 ZFMETHOD_USER_REGISTER_DETAIL_1(ownerClassSig, \
627 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
629 , _ZFP_mP_EXPAND(ZFMP_0) \
632#define ZFOBJECT_ON_INIT_USER_REGISTER_2(ownerClassSig \
636 ZFMETHOD_USER_REGISTER_DETAIL_2(ownerClassSig, \
637 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
639 , _ZFP_mP_EXPAND(ZFMP_0) \
640 , _ZFP_mP_EXPAND(ZFMP_1) \
643#define ZFOBJECT_ON_INIT_USER_REGISTER_3(ownerClassSig \
648 ZFMETHOD_USER_REGISTER_DETAIL_3(ownerClassSig, \
649 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
651 , _ZFP_mP_EXPAND(ZFMP_0) \
652 , _ZFP_mP_EXPAND(ZFMP_1) \
653 , _ZFP_mP_EXPAND(ZFMP_2) \
656#define ZFOBJECT_ON_INIT_USER_REGISTER_4(ownerClassSig \
662 ZFMETHOD_USER_REGISTER_DETAIL_4(ownerClassSig, \
663 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
665 , _ZFP_mP_EXPAND(ZFMP_0) \
666 , _ZFP_mP_EXPAND(ZFMP_1) \
667 , _ZFP_mP_EXPAND(ZFMP_2) \
668 , _ZFP_mP_EXPAND(ZFMP_3) \
671#define ZFOBJECT_ON_INIT_USER_REGISTER_5(ownerClassSig \
678 ZFMETHOD_USER_REGISTER_DETAIL_5(ownerClassSig, \
679 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
681 , _ZFP_mP_EXPAND(ZFMP_0) \
682 , _ZFP_mP_EXPAND(ZFMP_1) \
683 , _ZFP_mP_EXPAND(ZFMP_2) \
684 , _ZFP_mP_EXPAND(ZFMP_3) \
685 , _ZFP_mP_EXPAND(ZFMP_4) \
688#define ZFOBJECT_ON_INIT_USER_REGISTER_6(ownerClassSig \
696 ZFMETHOD_USER_REGISTER_DETAIL_6(ownerClassSig, \
697 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
699 , _ZFP_mP_EXPAND(ZFMP_0) \
700 , _ZFP_mP_EXPAND(ZFMP_1) \
701 , _ZFP_mP_EXPAND(ZFMP_2) \
702 , _ZFP_mP_EXPAND(ZFMP_3) \
703 , _ZFP_mP_EXPAND(ZFMP_4) \
704 , _ZFP_mP_EXPAND(ZFMP_5) \
707#define ZFOBJECT_ON_INIT_USER_REGISTER_7(ownerClassSig \
716 ZFMETHOD_USER_REGISTER_DETAIL_7(ownerClassSig, \
717 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
719 , _ZFP_mP_EXPAND(ZFMP_0) \
720 , _ZFP_mP_EXPAND(ZFMP_1) \
721 , _ZFP_mP_EXPAND(ZFMP_2) \
722 , _ZFP_mP_EXPAND(ZFMP_3) \
723 , _ZFP_mP_EXPAND(ZFMP_4) \
724 , _ZFP_mP_EXPAND(ZFMP_5) \
725 , _ZFP_mP_EXPAND(ZFMP_6) \
728#define ZFOBJECT_ON_INIT_USER_REGISTER_8(ownerClassSig \
738 ZFMETHOD_USER_REGISTER_DETAIL_8(ownerClassSig, \
739 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
741 , _ZFP_mP_EXPAND(ZFMP_0) \
742 , _ZFP_mP_EXPAND(ZFMP_1) \
743 , _ZFP_mP_EXPAND(ZFMP_2) \
744 , _ZFP_mP_EXPAND(ZFMP_3) \
745 , _ZFP_mP_EXPAND(ZFMP_4) \
746 , _ZFP_mP_EXPAND(ZFMP_5) \
747 , _ZFP_mP_EXPAND(ZFMP_6) \
748 , _ZFP_mP_EXPAND(ZFMP_7) \
755#define ZFObjectOnInitUserRegister_1(resultMethod, methodInvokerAction, ownerClass \
758 ZFMethodUserRegisterDetail_1(resultMethod, { \
759 methodInvokerAction \
760 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
761 , _ZFP_mP_EXPAND(ZFMP_0) \
764#define ZFObjectOnInitUserRegister_2(resultMethod, methodInvokerAction, ownerClass \
768 ZFMethodUserRegisterDetail_2(resultMethod, { \
769 methodInvokerAction \
770 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
771 , _ZFP_mP_EXPAND(ZFMP_0) \
772 , _ZFP_mP_EXPAND(ZFMP_1) \
775#define ZFObjectOnInitUserRegister_3(resultMethod, methodInvokerAction, ownerClass \
780 ZFMethodUserRegisterDetail_3(resultMethod, { \
781 methodInvokerAction \
782 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
783 , _ZFP_mP_EXPAND(ZFMP_0) \
784 , _ZFP_mP_EXPAND(ZFMP_1) \
785 , _ZFP_mP_EXPAND(ZFMP_2) \
788#define ZFObjectOnInitUserRegister_4(resultMethod, methodInvokerAction, ownerClass \
794 ZFMethodUserRegisterDetail_4(resultMethod, { \
795 methodInvokerAction \
796 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
797 , _ZFP_mP_EXPAND(ZFMP_0) \
798 , _ZFP_mP_EXPAND(ZFMP_1) \
799 , _ZFP_mP_EXPAND(ZFMP_2) \
800 , _ZFP_mP_EXPAND(ZFMP_3) \
803#define ZFObjectOnInitUserRegister_5(resultMethod, methodInvokerAction, ownerClass \
810 ZFMethodUserRegisterDetail_5(resultMethod, { \
811 methodInvokerAction \
812 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
813 , _ZFP_mP_EXPAND(ZFMP_0) \
814 , _ZFP_mP_EXPAND(ZFMP_1) \
815 , _ZFP_mP_EXPAND(ZFMP_2) \
816 , _ZFP_mP_EXPAND(ZFMP_3) \
817 , _ZFP_mP_EXPAND(ZFMP_4) \
820#define ZFObjectOnInitUserRegister_6(resultMethod, methodInvokerAction, ownerClass \
828 ZFMethodUserRegisterDetail_6(resultMethod, { \
829 methodInvokerAction \
830 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
831 , _ZFP_mP_EXPAND(ZFMP_0) \
832 , _ZFP_mP_EXPAND(ZFMP_1) \
833 , _ZFP_mP_EXPAND(ZFMP_2) \
834 , _ZFP_mP_EXPAND(ZFMP_3) \
835 , _ZFP_mP_EXPAND(ZFMP_4) \
836 , _ZFP_mP_EXPAND(ZFMP_5) \
839#define ZFObjectOnInitUserRegister_7(resultMethod, methodInvokerAction, ownerClass \
848 ZFMethodUserRegisterDetail_7(resultMethod, { \
849 methodInvokerAction \
850 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
851 , _ZFP_mP_EXPAND(ZFMP_0) \
852 , _ZFP_mP_EXPAND(ZFMP_1) \
853 , _ZFP_mP_EXPAND(ZFMP_2) \
854 , _ZFP_mP_EXPAND(ZFMP_3) \
855 , _ZFP_mP_EXPAND(ZFMP_4) \
856 , _ZFP_mP_EXPAND(ZFMP_5) \
857 , _ZFP_mP_EXPAND(ZFMP_6) \
860#define ZFObjectOnInitUserRegister_8(resultMethod, methodInvokerAction, ownerClass \
870 ZFMethodUserRegisterDetail_8(resultMethod, { \
871 methodInvokerAction \
872 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
873 , _ZFP_mP_EXPAND(ZFMP_0) \
874 , _ZFP_mP_EXPAND(ZFMP_1) \
875 , _ZFP_mP_EXPAND(ZFMP_2) \
876 , _ZFP_mP_EXPAND(ZFMP_3) \
877 , _ZFP_mP_EXPAND(ZFMP_4) \
878 , _ZFP_mP_EXPAND(ZFMP_5) \
879 , _ZFP_mP_EXPAND(ZFMP_6) \
880 , _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:203
#define ZF_IN
dummy macro that shows the param used as required input
Definition ZFCoreTypeDef_ClassType.h:191
#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:197
param for ZFMethodDynamicRegister
Definition ZFMethodDynamicRegister.h:102
reflectable method for ZFObject
Definition ZFMethod.h:252
util class to cast ZFObject types freely