ZFFramework
Loading...
Searching...
No Matches
Functions
ZFClassDynamicRegister.h File Reference

dynamic register a ZFClass More...

#include "ZFClass.h"

Go to the source code of this file.

Functions

const ZFClassZFClassDynamicRegister (const zfchar *classNameFull, const ZFClass *parent=0, ZFObject *classDynamicRegisterUserData=0, zfstring *errorHint=0)
 dynamic register a class
 
void ZFClassDynamicUnregister (const ZFClass *cls)
 unregister class that registered by ZFClassDynamicRegister
 
void ZFImplementDynamicRegister (const ZFClass *cls, const ZFClass *clsToImplement, ZFCoreArray< const ZFMethod * > *methodRegistered=0, ZFCoreArray< const ZFProperty * > *propertyRegistered=0)
 util to dynamic register methods and properties from another class
 
void ZFImplementDynamicUnregister (const ZFClass *cls, const ZFClass *clsToImplement)
 unregister contents that registered by ZFImplementDynamicRegister
 

Detailed Description

dynamic register a ZFClass

Function Documentation

◆ ZFClassDynamicRegister()

const ZFClass * ZFClassDynamicRegister ( const zfchar * classNameFull,
const ZFClass * parent = 0,
ZFObject * classDynamicRegisterUserData = 0,
zfstring * errorHint = 0 )
extern

dynamic register a class

parent class must be object type that can be allocated
return null if parent class not valid or class name already exists

Note
dynamic registered contents would be removed automatically during ZFFrameworkCleanup as level ZFLevelZFFrameworkHigh
it's ensured safe to unregister class even if allocated object instance still exists, at this case ZFObject::classData would return parent class after the class unregistered

◆ ZFImplementDynamicRegister()

void ZFImplementDynamicRegister ( const ZFClass * cls,
const ZFClass * clsToImplement,
ZFCoreArray< const ZFMethod * > * methodRegistered = 0,
ZFCoreArray< const ZFProperty * > * propertyRegistered = 0 )
extern

util to dynamic register methods and properties from another class

example for lua:

:classBegin('MyInterface')
:property('zfstring', 'myProp')
:classEnd();
:classBegin('MyClass')
:classImplement('MyInterface')
:propertyOnInt('myProp', function(zfargs)
-- OK, override property init step
end)
:classEnd();
local obj = MyClass()
-- OK, myProp implemented from MyInterface
zfLog('%s', obj:myProp())
-- false, only property and method are copied, class has no actual relationship
zfLog('%s', obj:classData():classIsTypeOf(MyInterface.ClassData()))
-- false, property and method are "copied", not "inherited"
zfLog('%s', obj:classData():methodForName('myProp') == MyInterface.ClassData():methodForName('myProp'))
#define zfLog(...)
thread-safe log utility
Definition ZFLog.h:64
util class to dynamic register class/method/property
Definition ZFDynamicRegisterUtil.h:55