ZFFramework
Loading...
Searching...
No Matches
ZFCoreStaticRegister.h
Go to the documentation of this file.
1
5#ifndef _ZFI_ZFCoreStaticRegister_h_
6#define _ZFI_ZFCoreStaticRegister_h_
7
8#include "ZFCoreTypeDef.h"
9
10// #define _ZFP_ZFCoreStaticRegister_DEBUG 1
11
12#if _ZFP_ZFCoreStaticRegister_DEBUG
14 #define _ZFP_ZFCoreStaticRegister_invokeTimeLogger(fmt, ...) \
15 zfimplInvokeTimeLogger("[ZFSR] " fmt \
16 , ##__VA_ARGS__ \
17 )
18#else
19 #define _ZFP_ZFCoreStaticRegister_invokeTimeLogger(fmt, ...)
20#endif
21
23
24// ============================================================
43#define ZF_STATIC_REGISTER_INIT(Name) \
44 \
45 zfclassNotPOD _ZFP_R_##Name { \
46 protected: \
47 typedef _ZFP_R_##Name zfself; \
48 public: \
49 _ZFP_R_##Name(void)
50
51#define ZF_STATIC_REGISTER_DESTROY(Name) \
52 ~_ZFP_R_##Name(void)
53
54#define ZF_STATIC_REGISTER_END(Name) \
55 }; \
56 static _ZFP_R_##Name _ZFP_RI_##Name; \
57
58
59#define ZF_STATIC_REGISTER_INSTANCE(Name) \
60 (&_ZFP_RI_##Name)
61
62#if _ZFP_ZFCoreStaticRegister_DEBUG
63 #undef ZF_STATIC_REGISTER_INIT
64 #undef ZF_STATIC_REGISTER_DESTROY
65 #undef ZF_STATIC_REGISTER_END
66
67 #define ZF_STATIC_REGISTER_INIT(Name) \
68 \
69 zfclassNotPOD _ZFP_R_##Name { \
70 protected: \
71 typedef _ZFP_R_##Name zfself; \
72 public: \
73 _ZFP_R_##Name(void) { \
74 _ZFP_ZFCoreStaticRegister_invokeTimeLogger("reg: %s", #Name); \
75 _ZFP_R_Reg(); \
76 } \
77 void _ZFP_R_Reg(void)
78 #define ZF_STATIC_REGISTER_DESTROY(Name) \
79 ~_ZFP_R_##Name(void) { \
80 _ZFP_ZFCoreStaticRegister_invokeTimeLogger("unreg: %s", #Name); \
81 _ZFP_R_Unreg(); \
82 } \
83 void _ZFP_R_Unreg(void)
84 #define ZF_STATIC_REGISTER_END(Name) \
85 }; \
86 static _ZFP_R_##Name _ZFP_RI_##Name; \
87
88#endif
89
91#endif // #ifndef _ZFI_ZFCoreStaticRegister_h_
92
types for ZFFramework
#define ZF_NAMESPACE_GLOBAL_BEGIN
begin namespace ZFFramework
Definition ZFNamespace.h:97
#define ZF_NAMESPACE_GLOBAL_END
end namespace ZFFramework
Definition ZFNamespace.h:98
minimal log util for internal debug use only