5#ifndef _ZFI_ZFCoreGlobalInitializer_h_
6#define _ZFI_ZFCoreGlobalInitializer_h_
20#define ZFFrameworkInitFinishCallbacks _ZFP_ZFFrameworkInitFinishCallbacks()
22#define ZFFrameworkCleanupPrepareCallbacks _ZFP_ZFFrameworkCleanupPrepareCallbacks()
56#define ZFTOKEN_ZFFrameworkStateNotAvailable "NotAvailable"
58#define ZFTOKEN_ZFFrameworkStateInitRunning "InitRunning"
60#define ZFTOKEN_ZFFrameworkStateAvailable "Available"
62#define ZFTOKEN_ZFFrameworkStateCleanupRunning "CleanupRunning"
97typedef void *(*_ZFP_GI_Constructor)(void);
98typedef void (*_ZFP_GI_Destructor)(
ZF_IN void *p);
105 ,
ZF_IN _ZFP_GI_Constructor constructor
106 ,
ZF_IN _ZFP_GI_Destructor destructor
110 void *instanceAccess(
void);
112 _ZFP_GI_RegPrivate *d;
115#define _ZFP_ZF_GLOBAL_INITIALIZER_INIT_WITH_LEVEL(Name, ZFLevel_) \
116 static void *_ZFP_GI_ctor_##Name(void); \
117 static void _ZFP_GI_dtor_##Name(ZF_IN void *p); \
118 static _ZFP_GI_Reg _ZFP_GI_reg_##Name(#Name, \
120 _ZFP_GI_ctor_##Name, \
121 _ZFP_GI_dtor_##Name \
123 zfclassNotPOD _ZFP_GI_##Name { \
125 typedef _ZFP_GI_##Name zfself; \
127 static _ZFP_GI_##Name *_ZFP_GI_I(void) { \
128 return (_ZFP_GI_##Name *)_ZFP_GI_reg_##Name.instanceAccess(); \
158#define ZF_GLOBAL_INITIALIZER_INIT_WITH_LEVEL(Name, ZFLevel_) \
159 _ZFP_ZF_GLOBAL_INITIALIZER_INIT_WITH_LEVEL(Name, ZFLevel_)
164#define ZF_GLOBAL_INITIALIZER_INIT(Name) \
165 _ZFP_ZF_GLOBAL_INITIALIZER_INIT_WITH_LEVEL(Name, ZFLevelAppNormal)
167#define _ZFP_ZF_GLOBAL_INITIALIZER_DESTROY(Name) \
169 ~_ZFP_GI_##Name(void)
173#define ZF_GLOBAL_INITIALIZER_DESTROY(Name) \
174 _ZFP_ZF_GLOBAL_INITIALIZER_DESTROY(Name)
176#define _ZFP_ZF_GLOBAL_INITIALIZER_END(Name) \
178 static void *_ZFP_GI_ctor_##Name(void) { \
179 return (void *)zfnew(_ZFP_GI_##Name); \
181 static void _ZFP_GI_dtor_##Name(ZF_IN void *p) { \
182 zfdelete((_ZFP_GI_##Name *)p); \
187#define ZF_GLOBAL_INITIALIZER_END(Name) \
188 _ZFP_ZF_GLOBAL_INITIALIZER_END(Name)
190#define _ZFP_ZF_GLOBAL_INITIALIZER_INSTANCE(Name) \
191 (_ZFP_GI_##Name::_ZFP_GI_I())
195#define ZF_GLOBAL_INITIALIZER_INSTANCE(Name) \
196 _ZFP_ZF_GLOBAL_INITIALIZER_INSTANCE(Name)
198#define _ZFP_ZF_GLOBAL_INITIALIZER_CLASS(Name) \
203#define ZF_GLOBAL_INITIALIZER_CLASS(Name) \
204 _ZFP_ZF_GLOBAL_INITIALIZER_CLASS(Name)
#define ZFLIB_ZFCore
used to export symbols
Definition ZFCoreEnvDef.h:30
ZFFrameworkState
state for ZFFramework
Definition ZFCoreGlobalInitializer.h:48
@ ZFFrameworkStateNotAvailable
not available
Definition ZFCoreGlobalInitializer.h:49
@ ZFFrameworkStateCleanupRunning
during cleanup step (ZFFrameworkCleanup)
Definition ZFCoreGlobalInitializer.h:52
@ ZFFrameworkStateAvailable
available, init finished
Definition ZFCoreGlobalInitializer.h:51
@ ZFFrameworkStateInitRunning
during init step (ZFFrameworkInit)
Definition ZFCoreGlobalInitializer.h:50
#define ZFTOKEN_ZFFrameworkStateCleanupRunning
string tokens
Definition ZFCoreGlobalInitializer.h:62
#define ZFTOKEN_ZFFrameworkStateInitRunning
string tokens
Definition ZFCoreGlobalInitializer.h:58
void ZFFrameworkCleanup(void)
see ZFFrameworkInit
#define ZFTOKEN_ZFFrameworkStateNotAvailable
string tokens
Definition ZFCoreGlobalInitializer.h:56
ZFFrameworkState ZFFrameworkStateCheck(void)
get current state of ZFFramework
#define ZFTOKEN_ZFFrameworkStateAvailable
string tokens
Definition ZFCoreGlobalInitializer.h:60
void ZFFrameworkInit(void)
must be called in main thread before any access of ZFFramework member
void ZFFrameworkAssertInit(void)
assert fail and output log if ZFFramework not initialized
void(* ZFFrameworkStateUpdateCallback)(void)
see ZFFrameworkInit
Definition ZFCoreGlobalInitializer.h:16
_ZFT_t_zfchar zfchar
char wrapper
Definition ZFCoreTypeDef_CharType.h:17
#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 ZFOUTPUT_TYPE(T_Type, outputAction)
declare your custom type conversion to string, convenient for debug
Definition ZFCoreTypeDef_OtherType.h:221
level for logic which depends on order
ZFLevel
level for logic which depends on order
Definition ZFLevel.h:17
#define ZF_NAMESPACE_GLOBAL_BEGIN
begin namespace ZFFramework
Definition ZFNamespace.h:97
#define ZF_NAMESPACE_GLOBAL_END
end namespace ZFFramework
Definition ZFNamespace.h:98
light weight array
Definition ZFCoreArray.h:331