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->classDynamic() ? this->classDynamic() : zfself::ClassData(); \
60 } \
61 private: \
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); \
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_ObjACk<zfself, 0>; \
77 friend zfclassFwd _ZFP_ObjACk<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 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 \
95 ); \
96 return h.cls; \
97 }
98#define _ZFP_ZFOBJECT_DECLARE_ABSTRACT(ChildClass, SuperClass, OuterClass, ...) \
99 public: \
100 typedef enum {_ZFP_ZFObjectCanAlloc = 0} _ZFP_ZFObjectCanAllocChecker; \
101 public: \
102 \
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), \
110 zfnull, \
111 zfnull, \
112 zfnull, \
113 &zfself::_ZFP_ObjI_regCk \
114 ); \
115 return h.cls; \
116 }
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) \
127 public:
128
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__) \
142 public:
143
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) \
153 public:
154
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__) \
160 public:
161
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__) \
210 )
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(); \
216 } \
217 ZF_STATIC_REGISTER_END(regSig)
218
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__)
225
226#define _ZFP_ZFOBJECT_REGISTER_clsSig_EXPAND(T) T::
227
242#define ZFOBJECT_PRIVATE_ALLOC(...) \
243 public: \
244 enum {_ZFP_ZFObjectCanAllocPublic = 0}; \
245 protected:
246
247// ============================================================
251#define ZFOBJECT_ON_INIT_INLINE_1( \
252 ZFMP_0 \
253 ) \
254 ZFMETHOD_INLINE_DETAIL_1( \
255 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
256 void, objectOnInit \
257 , _ZFP_mP_EXPAND(ZFMP_0) \
258 )
260#define ZFOBJECT_ON_INIT_DECLARE_1( \
261 ZFMP_0 \
262 ) \
263 ZFMETHOD_DECLARE_DETAIL_1( \
264 protected, ZFMethodTypeVirtual, \
265 void, objectOnInit \
266 , _ZFP_mP_EXPAND(ZFMP_0) \
267 )
269#define ZFOBJECT_ON_INIT_DEFINE_1(OwnerClass \
270 , ZFMP_0 \
271 ) \
272 ZFMETHOD_DEFINE_1(OwnerClass, void, objectOnInit \
273 , _ZFP_mP_EXPAND(ZFMP_0) \
274 )
276#define ZFOBJECT_ON_INIT_INLINE_2( \
277 ZFMP_0 \
278 , ZFMP_1 \
279 ) \
280 ZFMETHOD_INLINE_DETAIL_2( \
281 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
282 void, objectOnInit \
283 , _ZFP_mP_EXPAND(ZFMP_0) \
284 , _ZFP_mP_EXPAND(ZFMP_1) \
285 )
287#define ZFOBJECT_ON_INIT_DECLARE_2( \
288 ZFMP_0 \
289 , ZFMP_1 \
290 ) \
291 ZFMETHOD_DECLARE_DETAIL_2( \
292 protected, ZFMethodTypeVirtual, \
293 void, objectOnInit \
294 , _ZFP_mP_EXPAND(ZFMP_0) \
295 , _ZFP_mP_EXPAND(ZFMP_1) \
296 )
298#define ZFOBJECT_ON_INIT_DEFINE_2(OwnerClass \
299 , ZFMP_0 \
300 , ZFMP_1 \
301 ) \
302 ZFMETHOD_DEFINE_2(OwnerClass, void, objectOnInit \
303 , _ZFP_mP_EXPAND(ZFMP_0) \
304 , _ZFP_mP_EXPAND(ZFMP_1) \
305 )
307#define ZFOBJECT_ON_INIT_INLINE_3( \
308 ZFMP_0 \
309 , ZFMP_1 \
310 , ZFMP_2 \
311 ) \
312 ZFMETHOD_INLINE_DETAIL_3( \
313 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
314 void, objectOnInit \
315 , _ZFP_mP_EXPAND(ZFMP_0) \
316 , _ZFP_mP_EXPAND(ZFMP_1) \
317 , _ZFP_mP_EXPAND(ZFMP_2) \
318 )
320#define ZFOBJECT_ON_INIT_DECLARE_3( \
321 ZFMP_0 \
322 , ZFMP_1 \
323 , ZFMP_2 \
324 ) \
325 ZFMETHOD_DECLARE_DETAIL_3( \
326 protected, ZFMethodTypeVirtual, \
327 void, objectOnInit \
328 , _ZFP_mP_EXPAND(ZFMP_0) \
329 , _ZFP_mP_EXPAND(ZFMP_1) \
330 , _ZFP_mP_EXPAND(ZFMP_2) \
331 )
333#define ZFOBJECT_ON_INIT_DEFINE_3(OwnerClass \
334 , ZFMP_0 \
335 , ZFMP_1 \
336 , ZFMP_2 \
337 ) \
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) \
342 )
344#define ZFOBJECT_ON_INIT_INLINE_4( \
345 ZFMP_0 \
346 , ZFMP_1 \
347 , ZFMP_2 \
348 , ZFMP_3 \
349 ) \
350 ZFMETHOD_INLINE_DETAIL_4( \
351 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
352 void, objectOnInit \
353 , _ZFP_mP_EXPAND(ZFMP_0) \
354 , _ZFP_mP_EXPAND(ZFMP_1) \
355 , _ZFP_mP_EXPAND(ZFMP_2) \
356 , _ZFP_mP_EXPAND(ZFMP_3) \
357 )
359#define ZFOBJECT_ON_INIT_DECLARE_4( \
360 ZFMP_0 \
361 , ZFMP_1 \
362 , ZFMP_2 \
363 , ZFMP_3 \
364 ) \
365 ZFMETHOD_DECLARE_DETAIL_4( \
366 protected, ZFMethodTypeVirtual, \
367 void, objectOnInit \
368 , _ZFP_mP_EXPAND(ZFMP_0) \
369 , _ZFP_mP_EXPAND(ZFMP_1) \
370 , _ZFP_mP_EXPAND(ZFMP_2) \
371 , _ZFP_mP_EXPAND(ZFMP_3) \
372 )
374#define ZFOBJECT_ON_INIT_DEFINE_4(OwnerClass \
375 , ZFMP_0 \
376 , ZFMP_1 \
377 , ZFMP_2 \
378 , ZFMP_3 \
379 ) \
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) \
385 )
387#define ZFOBJECT_ON_INIT_INLINE_5( \
388 ZFMP_0 \
389 , ZFMP_1 \
390 , ZFMP_2 \
391 , ZFMP_3 \
392 , ZFMP_4 \
393 ) \
394 ZFMETHOD_INLINE_DETAIL_5( \
395 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
396 void, objectOnInit \
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) \
402 )
404#define ZFOBJECT_ON_INIT_DECLARE_5( \
405 ZFMP_0 \
406 , ZFMP_1 \
407 , ZFMP_2 \
408 , ZFMP_3 \
409 , ZFMP_4 \
410 ) \
411 ZFMETHOD_DECLARE_DETAIL_5( \
412 protected, ZFMethodTypeVirtual, \
413 void, objectOnInit \
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) \
419 )
421#define ZFOBJECT_ON_INIT_DEFINE_5(OwnerClass \
422 , ZFMP_0 \
423 , ZFMP_1 \
424 , ZFMP_2 \
425 , ZFMP_3 \
426 , ZFMP_4 \
427 ) \
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) \
434 )
436#define ZFOBJECT_ON_INIT_INLINE_6( \
437 ZFMP_0 \
438 , ZFMP_1 \
439 , ZFMP_2 \
440 , ZFMP_3 \
441 , ZFMP_4 \
442 , ZFMP_5 \
443 ) \
444 ZFMETHOD_INLINE_DETAIL_6( \
445 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
446 void, objectOnInit \
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) \
453 )
455#define ZFOBJECT_ON_INIT_DECLARE_6( \
456 ZFMP_0 \
457 , ZFMP_1 \
458 , ZFMP_2 \
459 , ZFMP_3 \
460 , ZFMP_4 \
461 , ZFMP_5 \
462 ) \
463 ZFMETHOD_DECLARE_DETAIL_6( \
464 protected, ZFMethodTypeVirtual, \
465 void, objectOnInit \
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) \
472 )
474#define ZFOBJECT_ON_INIT_DEFINE_6(OwnerClass \
475 , ZFMP_0 \
476 , ZFMP_1 \
477 , ZFMP_2 \
478 , ZFMP_3 \
479 , ZFMP_4 \
480 , ZFMP_5 \
481 ) \
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) \
489 )
491#define ZFOBJECT_ON_INIT_INLINE_7( \
492 ZFMP_0 \
493 , ZFMP_1 \
494 , ZFMP_2 \
495 , ZFMP_3 \
496 , ZFMP_4 \
497 , ZFMP_5 \
498 , ZFMP_6 \
499 ) \
500 ZFMETHOD_INLINE_DETAIL_7( \
501 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
502 void, objectOnInit \
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) \
510 )
512#define ZFOBJECT_ON_INIT_DECLARE_7( \
513 ZFMP_0 \
514 , ZFMP_1 \
515 , ZFMP_2 \
516 , ZFMP_3 \
517 , ZFMP_4 \
518 , ZFMP_5 \
519 , ZFMP_6 \
520 ) \
521 ZFMETHOD_DECLARE_DETAIL_7( \
522 protected, ZFMethodTypeVirtual, \
523 void, objectOnInit \
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) \
531 )
533#define ZFOBJECT_ON_INIT_DEFINE_7(OwnerClass \
534 , ZFMP_0 \
535 , ZFMP_1 \
536 , ZFMP_2 \
537 , ZFMP_3 \
538 , ZFMP_4 \
539 , ZFMP_5 \
540 , ZFMP_6 \
541 ) \
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) \
550 )
552#define ZFOBJECT_ON_INIT_INLINE_8( \
553 ZFMP_0 \
554 , ZFMP_1 \
555 , ZFMP_2 \
556 , ZFMP_3 \
557 , ZFMP_4 \
558 , ZFMP_5 \
559 , ZFMP_6 \
560 , ZFMP_7 \
561 ) \
562 ZFMETHOD_INLINE_DETAIL_8( \
563 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
564 void, objectOnInit \
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) \
573 )
575#define ZFOBJECT_ON_INIT_DECLARE_8( \
576 ZFMP_0 \
577 , ZFMP_1 \
578 , ZFMP_2 \
579 , ZFMP_3 \
580 , ZFMP_4 \
581 , ZFMP_5 \
582 , ZFMP_6 \
583 , ZFMP_7 \
584 ) \
585 ZFMETHOD_DECLARE_DETAIL_8( \
586 protected, ZFMethodTypeVirtual, \
587 void, objectOnInit \
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) \
596 )
598#define ZFOBJECT_ON_INIT_DEFINE_8(OwnerClass \
599 , ZFMP_0 \
600 , ZFMP_1 \
601 , ZFMP_2 \
602 , ZFMP_3 \
603 , ZFMP_4 \
604 , ZFMP_5 \
605 , ZFMP_6 \
606 , ZFMP_7 \
607 ) \
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) \
617 )
618
619// ============================================================
623#define ZFOBJECT_ON_INIT_USER_REGISTER_1(ownerClassSig \
624 , ZFMP_0 \
625 ) \
626 ZFMETHOD_USER_REGISTER_DETAIL_1(ownerClassSig, \
627 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
628 void, objectOnInit \
629 , _ZFP_mP_EXPAND(ZFMP_0) \
630 )
632#define ZFOBJECT_ON_INIT_USER_REGISTER_2(ownerClassSig \
633 , ZFMP_0 \
634 , ZFMP_1 \
635 ) \
636 ZFMETHOD_USER_REGISTER_DETAIL_2(ownerClassSig, \
637 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
638 void, objectOnInit \
639 , _ZFP_mP_EXPAND(ZFMP_0) \
640 , _ZFP_mP_EXPAND(ZFMP_1) \
641 )
643#define ZFOBJECT_ON_INIT_USER_REGISTER_3(ownerClassSig \
644 , ZFMP_0 \
645 , ZFMP_1 \
646 , ZFMP_2 \
647 ) \
648 ZFMETHOD_USER_REGISTER_DETAIL_3(ownerClassSig, \
649 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
650 void, objectOnInit \
651 , _ZFP_mP_EXPAND(ZFMP_0) \
652 , _ZFP_mP_EXPAND(ZFMP_1) \
653 , _ZFP_mP_EXPAND(ZFMP_2) \
654 )
656#define ZFOBJECT_ON_INIT_USER_REGISTER_4(ownerClassSig \
657 , ZFMP_0 \
658 , ZFMP_1 \
659 , ZFMP_2 \
660 , ZFMP_3 \
661 ) \
662 ZFMETHOD_USER_REGISTER_DETAIL_4(ownerClassSig, \
663 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
664 void, objectOnInit \
665 , _ZFP_mP_EXPAND(ZFMP_0) \
666 , _ZFP_mP_EXPAND(ZFMP_1) \
667 , _ZFP_mP_EXPAND(ZFMP_2) \
668 , _ZFP_mP_EXPAND(ZFMP_3) \
669 )
671#define ZFOBJECT_ON_INIT_USER_REGISTER_5(ownerClassSig \
672 , ZFMP_0 \
673 , ZFMP_1 \
674 , ZFMP_2 \
675 , ZFMP_3 \
676 , ZFMP_4 \
677 ) \
678 ZFMETHOD_USER_REGISTER_DETAIL_5(ownerClassSig, \
679 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
680 void, objectOnInit \
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) \
686 )
688#define ZFOBJECT_ON_INIT_USER_REGISTER_6(ownerClassSig \
689 , ZFMP_0 \
690 , ZFMP_1 \
691 , ZFMP_2 \
692 , ZFMP_3 \
693 , ZFMP_4 \
694 , ZFMP_5 \
695 ) \
696 ZFMETHOD_USER_REGISTER_DETAIL_6(ownerClassSig, \
697 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
698 void, objectOnInit \
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) \
705 )
707#define ZFOBJECT_ON_INIT_USER_REGISTER_7(ownerClassSig \
708 , ZFMP_0 \
709 , ZFMP_1 \
710 , ZFMP_2 \
711 , ZFMP_3 \
712 , ZFMP_4 \
713 , ZFMP_5 \
714 , ZFMP_6 \
715 ) \
716 ZFMETHOD_USER_REGISTER_DETAIL_7(ownerClassSig, \
717 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
718 void, objectOnInit \
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) \
726 )
728#define ZFOBJECT_ON_INIT_USER_REGISTER_8(ownerClassSig \
729 , ZFMP_0 \
730 , ZFMP_1 \
731 , ZFMP_2 \
732 , ZFMP_3 \
733 , ZFMP_4 \
734 , ZFMP_5 \
735 , ZFMP_6 \
736 , ZFMP_7 \
737 ) \
738 ZFMETHOD_USER_REGISTER_DETAIL_8(ownerClassSig, \
739 protected, ZFMethodTypeVirtual, ZF_CALLER_LINE, \
740 void, objectOnInit \
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) \
749 )
750
751// ============================================================
755#define ZFObjectOnInitUserRegister_1(resultMethod, methodInvokerAction, ownerClass \
756 , ZFMP_0 \
757 ) \
758 ZFMethodUserRegisterDetail_1(resultMethod, { \
759 methodInvokerAction \
760 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
761 , _ZFP_mP_EXPAND(ZFMP_0) \
762 )
764#define ZFObjectOnInitUserRegister_2(resultMethod, methodInvokerAction, ownerClass \
765 , ZFMP_0 \
766 , ZFMP_1 \
767 ) \
768 ZFMethodUserRegisterDetail_2(resultMethod, { \
769 methodInvokerAction \
770 }, ownerClass, protected, ZFMethodTypeVirtual, void, "objectOnInit" \
771 , _ZFP_mP_EXPAND(ZFMP_0) \
772 , _ZFP_mP_EXPAND(ZFMP_1) \
773 )
775#define ZFObjectOnInitUserRegister_3(resultMethod, methodInvokerAction, ownerClass \
776 , ZFMP_0 \
777 , ZFMP_1 \
778 , ZFMP_2 \
779 ) \
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) \
786 )
788#define ZFObjectOnInitUserRegister_4(resultMethod, methodInvokerAction, ownerClass \
789 , ZFMP_0 \
790 , ZFMP_1 \
791 , ZFMP_2 \
792 , ZFMP_3 \
793 ) \
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) \
801 )
803#define ZFObjectOnInitUserRegister_5(resultMethod, methodInvokerAction, ownerClass \
804 , ZFMP_0 \
805 , ZFMP_1 \
806 , ZFMP_2 \
807 , ZFMP_3 \
808 , ZFMP_4 \
809 ) \
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) \
818 )
820#define ZFObjectOnInitUserRegister_6(resultMethod, methodInvokerAction, ownerClass \
821 , ZFMP_0 \
822 , ZFMP_1 \
823 , ZFMP_2 \
824 , ZFMP_3 \
825 , ZFMP_4 \
826 , ZFMP_5 \
827 ) \
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) \
837 )
839#define ZFObjectOnInitUserRegister_7(resultMethod, methodInvokerAction, ownerClass \
840 , ZFMP_0 \
841 , ZFMP_1 \
842 , ZFMP_2 \
843 , ZFMP_3 \
844 , ZFMP_4 \
845 , ZFMP_5 \
846 , ZFMP_6 \
847 ) \
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) \
858 )
860#define ZFObjectOnInitUserRegister_8(resultMethod, methodInvokerAction, ownerClass \
861 , ZFMP_0 \
862 , ZFMP_1 \
863 , ZFMP_2 \
864 , ZFMP_3 \
865 , ZFMP_4 \
866 , ZFMP_5 \
867 , ZFMP_6 \
868 , ZFMP_7 \
869 ) \
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) \
881 )
882
883// ============================================================
891 ZF_IN const ZFClass *cls
892 , ZF_IN const ZFMP &methodParam
893 , ZF_IN const ZFListener &methodImpl
894 , ZF_OUT_OPT zfstring *errorHint = zfnull
895 );
900 ZF_IN const ZFClass *cls
902 , ZF_OUT_OPT zfstring *errorHint = zfnull
903 );
904
906#endif // #ifndef _ZFI_ZFObjectDeclare_h_
907
#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