ZFFramework
 
Loading...
Searching...
No Matches
ZFClassDynamicRegister.h
Go to the documentation of this file.
1
5
6#ifndef _ZFI_ZFClassDynamicRegister_h_
7#define _ZFI_ZFClassDynamicRegister_h_
8
9#include "ZFClass.h"
11
27 ZF_IN const zfstring &classNameFull
28 , ZF_IN_OPT const ZFClass *parent = zfnull
29 , ZF_IN_OPT ZFObject *classDynamicRegisterUserData = zfnull
30 , ZF_OUT_OPT zfstring *errorHint = zfnull
31 );
36
37// ============================================================
40 ZF_IN const ZFClass *cls
41 , ZF_IN const ZFClass *clsToImplement
42 );
45 ZF_IN const ZFClass *cls
46 , ZF_IN const ZFClass *clsToImplement
47 );
48
74#define ZFCLASS_EXTEND(ExistClass, AttachClass) \
75 ZFCLASS_EXTEND_DETAIL(ExistClass, AttachClass, ExistClass##_##AttachClass)
76
80#define ZFCLASS_EXTEND_DETAIL(ExistClass, AttachClass, regSig) \
81 ZF_GLOBAL_INITIALIZER_INIT_WITH_LEVEL(DynImpl_##regSig, ZFLevelZFFrameworkStatic) { \
82 ZFImplementDynamicRegister(ExistClass::ClassData(), AttachClass::ClassData()); \
83 } \
84 ZF_GLOBAL_INITIALIZER_DESTROY(DynImpl_##regSig) { \
85 ZFImplementDynamicUnregister(ExistClass::ClassData(), AttachClass::ClassData()); \
86 } \
87 ZF_GLOBAL_INITIALIZER_END(DynImpl_##regSig)
88
90#endif // #ifndef _ZFI_ZFClassDynamicRegister_h_
91
meta data for ZFObject
void ZFImplementDynamicUnregister(const ZFClass *cls, const ZFClass *clsToImplement)
see ZFCLASS_EXTEND
const ZFClass * ZFClassDynamicRegister(const zfstring &classNameFull, const ZFClass *parent=zft_zfnull, ZFObject *classDynamicRegisterUserData=zft_zfnull, zfstring *errorHint=zft_zfnull)
dynamic register a class
void ZFClassDynamicUnregister(const ZFClass *cls)
unregister class that registered by ZFClassDynamicRegister
zfbool ZFImplementDynamicRegister(const ZFClass *cls, const ZFClass *clsToImplement)
see ZFCLASS_EXTEND
#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:192
#define ZF_IN
dummy macro that shows the param used as required input
Definition ZFCoreTypeDef_ClassType.h:180
#define ZF_IN_OPT
dummy macro that shows the param used as optional input
Definition ZFCoreTypeDef_ClassType.h:184
_ZFT_t_zfbool zfbool
bool type
Definition ZFCoreTypeDef_CoreType.h:103
#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
ZFObject's class info.
Definition ZFClass.h:67
base class of all objects
Definition ZFObjectCore.h:209