Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
ZSaberLv0 committed Jun 26, 2024
1 parent 4c0e2fb commit 28a451d
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 12 deletions.
31 changes: 19 additions & 12 deletions ZF/ZFCore/zfsrc/ZFCore/ZFObjectDef/ZFClassDynamicRegister.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,17 @@ extern ZFLIB_ZFCore const ZFClass *ZFClassDynamicRegister(
extern ZFLIB_ZFCore void ZFClassDynamicUnregister(ZF_IN const ZFClass *cls);

// ============================================================
/** @brief see #ZFCLASS_EXTEND */
extern ZFLIB_ZFCore zfbool ZFImplementDynamicRegister(
ZF_IN const ZFClass *cls
, ZF_IN const ZFClass *clsToImplement
);
/** @brief see #ZFCLASS_EXTEND */
extern ZFLIB_ZFCore void ZFImplementDynamicUnregister(
ZF_IN const ZFClass *cls
, ZF_IN const ZFClass *clsToImplement
);

/**
* @brief advanced dynamic implement
*
Expand All @@ -44,7 +55,10 @@ extern ZFLIB_ZFCore void ZFClassDynamicUnregister(ZF_IN const ZFClass *cls);
* zfclass AttachClass : zfextend ZFObject {...};
*
* // register
* ZFImplementDynamicRegister(ExistClass::ClassData(), AttachClass::ClassData());
* // ZFImplementDynamicRegister(ExistClass::ClassData(), AttachClass::ClassData());
*
* // or use the util macro for short
* ZFCLASS_EXTEND(ExistClass, AttachClass)
*
* // create object
* zfobj<ExistClass> obj;
Expand All @@ -57,20 +71,13 @@ extern ZFLIB_ZFCore void ZFClassDynamicUnregister(ZF_IN const ZFClass *cls);
* @endcode
* this is useful to extend existing class, simplar to category of Object-C
*/
extern ZFLIB_ZFCore zfbool ZFImplementDynamicRegister(
ZF_IN const ZFClass *cls
, ZF_IN const ZFClass *clsToImplement
);
/** @brief see #ZFImplementDynamicRegister */
extern ZFLIB_ZFCore void ZFImplementDynamicUnregister(
ZF_IN const ZFClass *cls
, ZF_IN const ZFClass *clsToImplement
);
#define ZFCLASS_EXTEND(ExistClass, AttachClass) \
ZFCLASS_EXTEND_DETAIL(ExistClass, AttachClass, ExistClass##_##AttachClass)

/**
* @brief util macro to register #ZFImplementDynamicRegister
* @brief #ZFCLASS_EXTEND with custom regSig
*/
#define ZFCLASS_EXTEND(regSig, ExistClass, AttachClass) \
#define ZFCLASS_EXTEND_DETAIL(ExistClass, AttachClass, regSig) \
ZF_GLOBAL_INITIALIZER_INIT_WITH_LEVEL(DynImpl_##regSig, ZFLevelZFFrameworkStatic) { \
ZFImplementDynamicRegister(ExistClass::ClassData(), AttachClass::ClassData()); \
} \
Expand Down
1 change: 1 addition & 0 deletions ZF/ZFUIWidget/zfsrc/ZFUIWidget/ZFUIWidgetDef.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include "ZFAlgorithm.h"
#include "ZFUtility.h"
#include "ZFUIKit.h"
#include "ZFNet.h"
ZF_NAMESPACE_GLOBAL_BEGIN

/** @brief used to export symbols */
Expand Down

0 comments on commit 28a451d

Please sign in to comment.