ZFFramework
Loading...
Searching...
No Matches
ZFObjectCore.h
Go to the documentation of this file.
1
5
6#ifndef _ZFI_ZFObjectCore_h_
7#define _ZFI_ZFObjectCore_h_
8
9#include "zfany.h"
10#include "ZFClass.h"
11#include "ZFMethod.h"
12#include "ZFObjectDeclare.h"
13#include "ZFObjectInterface.h"
14#include "ZFProperty.h"
15#include "ZFObjectMutex.h"
16#include "ZFObjectObserver.h"
17
19
24#define ZFTOKEN_ZFObjectInfoLeft "<"
29#define ZFTOKEN_ZFObjectInfoRight ">"
30
31// ============================================================
42
43#define ZFTOKEN_ZFObjectInstanceStateOnInit "OnInit"
45#define ZFTOKEN_ZFObjectInstanceStateOnInitFinish "OnInitFinish"
47#define ZFTOKEN_ZFObjectInstanceStateIdle "Idle"
49#define ZFTOKEN_ZFObjectInstanceStateOnDeallocPrepare "OnDeallocPrepare"
51#define ZFTOKEN_ZFObjectInstanceStateOnDealloc "OnDealloc"
52
53// ============================================================
54zfclassNotPOD ZFLIB_ZFCore _ZFP_Obj_Base {
55public:
56 static const ZFClass *ClassData(void) {
57 return zfnull;
58 }
59 static void _ZFP_ObjI_reg(ZFClass *cls) {}
60 static ZFObject *_ZFP_ObjACIvk(void) {return zfnull;}
61};
62template<typename T_ZFObject, int valid>
63zfclassNotPOD _ZFP_ObjACk;
64zfclassFwd _ZFP_ZFObjectPrivate;
65zfclassFwd _ZFP_I_zfweak;
197 _ZFP_ZFOBJECT_DECLARE(ZFObject, _ZFP_Obj_Base)
198 _ZFP_ZFOBJECT_DECLARE_OBJECT(ZFObject, _ZFP_Obj_Base, _ZFP_Obj_Base)
199
200public:
202 enum {_ZFP_ZFObjectCanAllocPublic = 1};
203 static void _ZFP_ObjI_reg(ZFClass *cls) {} // interface reg
204 static ZFObject *_ZFP_ObjACIvk(void) {return zfnull;} // alloc cache invoker
205 static inline void _ZFP_ObjACR(ZF_IN ZFObject *_obj) {} // alloc cache release
206 virtual inline void _ZFP_ObjI_ctor(void) {} // onInit
207 virtual inline void _ZFP_ObjI_dtor(void) {} // onDealloc
209
210 // ============================================================
211 // observer events
212public:
220 ZFEVENT(ObjectBeforeAlloc)
228 ZFEVENT(ObjectAfterAlloc)
239 ZFEVENT(ObjectBeforeDealloc)
251 ZFEVENT(ObjectPropertyValueOnUpdate)
259 ZFEVENT(ObjectPropertyValueOnReset)
260
261public:
265 zffinal inline const ZFClass *classDynamic(void) {
266 return _classDynamic;
267 }
268
274 return _objectRetainCount;
275 }
276
277 zffinal _ZFP_I_zfweak *_ZFP_ZFObject_weakHolder(void);
278
281 ret += this->classData()->classNameFull();
282 ret += "(";
283 zfsFromPointerT(ret, this);
284 ret += ")";
285 }
286
294 zfstring ret;
295 this->objectInfoOfInstanceT(ret);
296 return ret;
297 }
298
309 zfstring ret;
310 this->objectInfoT(ret);
311 return ret;
312 }
313 zffinal inline void _ZFP_ZFObject_objectInfoImpl(ZF_IN_OUT zfstring &ret) {
314 this->objectInfoImpl(ret);
315 }
316
317protected:
319 virtual inline void objectInfoImpl(ZF_IN_OUT zfstring &ret) {
321 this->objectInfoImplAppend(ret);
323 }
324
325 virtual inline void objectInfoImplAppend(ZF_IN_OUT zfstring &ret) {
326 this->objectInfoOfInstanceT(ret);
327 }
328
329public:
373
374 zffinal zfidentity _ZFP_ZFObject_objectHashImpl(void) {
375 return this->objectHashImpl();
376 }
377 zffinal ZFCompareResult _ZFP_ZFObject_objectCompareImpl(ZF_IN ZFObject *anotherObj) {
378 return this->objectCompareImpl(anotherObj);
379 }
380 zffinal ZFCompareResult _ZFP_ZFObject_objectCompareValueImpl(ZF_IN ZFObject *anotherObj) {
381 return this->objectCompareValueImpl(anotherObj);
382 }
383
384protected:
386 virtual inline zfidentity objectHashImpl(void) {
387 return zfidentityCalc(this);
388 }
389
390 virtual inline ZFCompareResult objectCompareImpl(ZF_IN ZFObject *anotherObj) {
391 return ((this == anotherObj) ? ZFCompareEqual : ZFCompareUncomparable);
392 }
393
394 virtual inline ZFCompareResult objectCompareValueImpl(ZF_IN ZFObject *anotherObj) {
395 return this->objectCompare(anotherObj);
396 }
397
398public:
399 /* ZFMETHOD_MAX_PARAM */
404 virtual zfauto invoke(
405 ZF_IN const zfstring &methodName
406 );
411 virtual zfauto invoke(
412 ZF_IN const zfstring &methodName
413 , ZF_IN ZFObject *param0
414 , ZF_IN_OPT ZFObject *param1 = ZFMP_DEF()
415 , ZF_IN_OPT ZFObject *param2 = ZFMP_DEF()
416 , ZF_IN_OPT ZFObject *param3 = ZFMP_DEF()
417 , ZF_IN_OPT ZFObject *param4 = ZFMP_DEF()
418 , ZF_IN_OPT ZFObject *param5 = ZFMP_DEF()
419 , ZF_IN_OPT ZFObject *param6 = ZFMP_DEF()
420 , ZF_IN_OPT ZFObject *param7 = ZFMP_DEF()
421 );
427 ZF_OUT zfauto &ret
428 , ZF_OUT_OPT zfstring *errorHint
429 , ZF_IN const zfstring &methodName
430 , ZF_IN_OPT ZFObject *param0 = ZFMP_DEF()
431 , ZF_IN_OPT ZFObject *param1 = ZFMP_DEF()
432 , ZF_IN_OPT ZFObject *param2 = ZFMP_DEF()
433 , ZF_IN_OPT ZFObject *param3 = ZFMP_DEF()
434 , ZF_IN_OPT ZFObject *param4 = ZFMP_DEF()
435 , ZF_IN_OPT ZFObject *param5 = ZFMP_DEF()
436 , ZF_IN_OPT ZFObject *param6 = ZFMP_DEF()
437 , ZF_IN_OPT ZFObject *param7 = ZFMP_DEF()
438 );
444 ZF_IN const zfstring &methodName
445 , ZF_IN const ZFCoreArray<zfauto> &params
446 , ZF_OUT_OPT zfbool *success = zfnull
447 , ZF_OUT_OPT zfstring *errorHint = zfnull
448 );
449
450public:
462 ZF_IN const zfstring &key
463 , ZF_IN ZFObject *tag
464 );
475 );
479 zffinal inline void objectTagRemove(ZF_IN const zfstring &key) {
480 this->objectTag(key, zfnull);
481 }
482
496
497public:
502 ZF_IN zfidentity eventId
503 , ZF_IN const ZFListener &observer
504 , ZF_IN_OPT ZFLevel observerLevel = ZFLevelAppNormal
505 );
510 ZF_IN zfidentity eventId
511 , ZF_IN const ZFListener &observer
512 , ZF_IN_OPT ZFLevel observerLevel = ZFLevelAppNormal
513 );
518 ZF_IN zfidentity eventId
519 , ZF_IN const ZFListener &callback
520 );
572 ZF_IN zfidentity eventId
573 , ZF_IN_OPT ZFObject *param0 = zfnull
574 , ZF_IN_OPT ZFObject *param1 = zfnull
575 );
578 ZF_IN ZFObject *customSender
579 , ZF_IN zfidentity eventId
580 , ZF_IN_OPT ZFObject *param0 = zfnull
581 , ZF_IN_OPT ZFObject *param1 = zfnull
582 );
585 ZF_IN zfidentity eventId
586 , ZF_IN_OPT ZFObject *param0 = zfnull
587 , ZF_IN_OPT ZFObject *param1 = zfnull
588 );
591 ZF_IN ZFObject *customSender
592 , ZF_IN zfidentity eventId
593 , ZF_IN_OPT ZFObject *param0 = zfnull
594 , ZF_IN_OPT ZFObject *param1 = zfnull
595 );
596
604 zffinal ZFObserver &observerHolder(void);
605
606public:
627 ZF_IN const zfstring &eventName
628 , ZF_IN const ZFListener &observer
629 , ZF_IN_OPT ZFLevel observerLevel = ZFLevelAppNormal
630 );
632 zffinal inline void on(
633 ZF_IN zfidentity eventId
634 , ZF_IN const ZFListener &observer
635 , ZF_IN_OPT ZFLevel observerLevel = ZFLevelAppNormal
636 ) {
637 this->observerAdd(eventId, observer, observerLevel);
638 }
639
642 zffinal inline void onInit(ZF_IN const ZFListener &impl) {
643 impl.execute(ZFArgs().sender(this));
644 }
645
648 zffinal inline void onDealloc(ZF_IN const ZFListener &impl) {
650 }
651
652protected:
656 virtual void observerOnAdd(ZF_IN zfidentity eventId);
660 virtual void observerOnRemove(ZF_IN zfidentity eventId);
666 virtual inline void observerOnEvent(ZF_IN const ZFArgs &zfargs) {
667 }
668
669public:
670 void _ZFP_ZFObjectLock(void);
671 void _ZFP_ZFObjectUnlock(void);
672 zfbool _ZFP_ZFObjectTryLock(void);
673
674 void _ZFP_ZFObject_objectOnInit(void);
675 void _ZFP_ZFObject_objectOnInitFinish(void);
676 void _ZFP_ZFObject_objectOnInitFromCache(void);
677 void _ZFP_ZFObjectCheckRelease(void);
678
679protected:
736 virtual void objectOnInit(void);
742 virtual inline void objectOnInitFinish(void) {
743 }
744
751 virtual inline void objectOnDeallocPrepare(void) {
752 this->objectTagRemoveAll();
753 this->observerRemoveAll();
754 }
755
761 virtual void objectOnDealloc(void);
762
769 virtual inline void objectOnRetain(void) {
771 "[ZFObject] retain an object while objectOnDealloc running: %s", this->objectInfoOfInstance());
772 ++_objectRetainCount;
773 }
774
780 virtual inline void objectOnRelease(void) {
781 --_objectRetainCount;
782 }
783
784public:
793
794public:
807
808public:
809 zffinal void _ZFP_ZFObject_objectPropertyValueAttach(ZF_IN const ZFProperty *property);
810 zffinal void _ZFP_ZFObject_objectPropertyValueDetach(ZF_IN const ZFProperty *property);
811 zffinal inline void _ZFP_ZFObject_objectPropertyValueOnUpdate(
812 ZF_IN const ZFProperty *property
813 , ZF_IN const void *oldValue
814 ) {
815 this->objectPropertyValueOnUpdate(property, oldValue);
816 }
817 zffinal inline void _ZFP_ZFObject_objectPropertyValueOnReset(
818 ZF_IN const ZFProperty *property
819 ) {
820 this->objectPropertyValueOnReset(property);
821 }
822protected:
832 ZF_IN const ZFProperty *property
833 , ZF_IN const void *oldValue
834 );
837 ZF_IN const ZFProperty *property
838 );
839
840 // ============================================================
841public:
842 zffinal void _ZFP_ZFObject_zfobjAllocCacheRelease(ZF_IN _ZFP_zfobjAllocCacheReleaseCallback callback);
843 zffinal _ZFP_zfobjAllocCacheReleaseCallback _ZFP_ZFObject_zfobjAllocCacheRelease(void);
844 zffinal ZFObject *_ZFP_ZFObject_ZFImplementDynamicOwnerOrSelf(void);
845 zffinal ZFObject *_ZFP_ZFObject_ZFImplementDynamicHolder(ZF_IN const ZFClass *clsToImplement);
846
847private:
848 friend zfclassFwd ZFClass;
849 friend zfclassFwd _ZFP_ZFClassPrivate;
850 friend zfclassFwd ZFObserver;
851 friend zfclassFwd _ZFP_ZFObserverPrivate;
852 template<typename T_ZFObject, int valid>
853 friend zfclassFwd _ZFP_ObjACk;
854 friend void _ZFP_zfobjRetainAction(ZF_IN ZFObject *obj);
855 friend void _ZFP_zfobjReleaseAction(ZF_IN ZFObject *obj);
856private:
857 const ZFClass *_classDynamic;
858 _ZFP_ZFObjectPrivate *d;
859 zfuint _objectRetainCount;
860 zfuint _stateFlags;
861protected:
863 ZFObject(void)
864 : _classDynamic(zfnull)
865 , d(zfnull)
866 , _objectRetainCount(1)
867 , _stateFlags(0)
868 {
869 }
870 virtual ~ZFObject(void) {
871 }
873};
874
877public:
880 : _obj(obj)
881 {
882 _obj->_ZFP_ZFObjectLock();
883 }
885 _obj->_ZFP_ZFObjectUnlock();
886 }
888private:
889 ZFObject *_obj;
890};
891
916#define ZFObjectLocker(obj) ZFObjectLockerHolder ZFUniqueName(ObjLk)(_ZFP_zfanyCast(obj))
918#define ZFObjectLock(obj) _ZFP_zfanyCast(obj)->_ZFP_ZFObjectLock()
920#define ZFObjectUnlock(obj) _ZFP_zfanyCast(obj)->_ZFP_ZFObjectUnlock()
922#define ZFObjectTryLock(obj) _ZFP_zfanyCast(obj)->_ZFP_ZFObjectTryLock()
923
925#endif // #ifndef _ZFI_ZFObjectCore_h_
926
meta data for ZFObject
#define ZFLIB_ZFCore
used to export symbols
Definition ZFCoreEnvDef.h:30
#define ZFCoreAssertWithMessageTrim(exp, fmt,...)
see ZFCoreAssertWithMessage
Definition ZFCoreLog_CommonLog.h:81
zfbool zfsFromPointerT(zfstring &s, const void *p)
convert pointer value to string
Definition ZFCoreStringConvert.h:331
#define ZF_OUT_OPT
dummy macro that shows the param used as optional output
Definition ZFCoreTypeDef_ClassType.h:196
#define zffinal
dummy macro shows that a method or class is designed must not to be overrided
Definition ZFCoreTypeDef_ClassType.h:63
#define ZF_IN
dummy macro that shows the param used as required input
Definition ZFCoreTypeDef_ClassType.h:184
#define ZF_IN_OPT
dummy macro that shows the param used as optional input
Definition ZFCoreTypeDef_ClassType.h:188
#define ZF_OUT
dummy macro that shows the param used as required output
Definition ZFCoreTypeDef_ClassType.h:192
#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 ZF_IN_OUT
dummy macro that shows the param used as required input and output
Definition ZFCoreTypeDef_ClassType.h:200
#define zfclassFwd
forward declaration of a class type
Definition ZFCoreTypeDef_ClassType.h:31
_ZFT_t_zfbool zfbool
bool type
Definition ZFCoreTypeDef_CoreType.h:103
_ZFT_t_zfindex zfindex
similar to size_t, used for index and size only
Definition ZFCoreTypeDef_CoreType.h:154
_zft_zfidentity zfidentity
identity type, ensured at least 32 bit, ensured unsigned
Definition ZFCoreTypeDef_CoreType.h:225
#define zfnull
same as NULL, defined for future use
Definition ZFCoreTypeDef_CoreType.h:88
_ZFT_t_zfuint zfuint
same as unsigned int, see zfindex
Definition ZFCoreTypeDef_CoreType.h:169
ZFCompareResult
compare result of two ZFObjects
Definition ZFCoreTypeDef_OtherType.h:28
@ ZFCompareUncomparable
Definition ZFCoreTypeDef_OtherType.h:29
@ ZFCompareEqual
Definition ZFCoreTypeDef_OtherType.h:31
zft_zfstring< zfchar > zfstring
see zft_zfstring
Definition ZFCoreTypeDef_StringType.h:15
zfidentity zfidentityCalc(T_Type const &v)
calculate identity from POD object
Definition ZFIdentityUtil.h:92
ZFLevel
level for logic which depends on order
Definition ZFLevel.h:17
@ ZFLevelAppNormal
app
Definition ZFLevel.h:26
reflectable method definination for ZFFramework
#define ZFMP_DEF()
mark the object as default param
Definition ZFMethodGenericInvoker.h:30
#define ZF_NAMESPACE_GLOBAL_BEGIN
begin namespace ZFFramework
Definition ZFNamespace.h:97
#define ZF_NAMESPACE_GLOBAL_END
end namespace ZFFramework
Definition ZFNamespace.h:98
#define zfclass
same as class, shows that this class is a ZFObject type
Definition ZFObjectClassTypeFwd.h:38
#define ZFTOKEN_ZFObjectInfoLeft
left bracket when output ZFObject's info
Definition ZFObjectCore.h:24
ZFObjectInstanceState
object instance state for ZFObject
Definition ZFObjectCore.h:35
@ ZFObjectInstanceStateOnInit
object is under ZFObject::objectOnInit
Definition ZFObjectCore.h:36
@ ZFObjectInstanceStateIdle
object is constructed successfully
Definition ZFObjectCore.h:38
@ ZFObjectInstanceStateOnDealloc
object is under ZFObject::objectOnDealloc
Definition ZFObjectCore.h:40
@ ZFObjectInstanceStateOnInitFinish
object is under ZFObject::objectOnInitFinish
Definition ZFObjectCore.h:37
@ ZFObjectInstanceStateOnDeallocPrepare
object is under ZFObject::objectOnDeallocPrepare
Definition ZFObjectCore.h:39
#define ZFTOKEN_ZFObjectInfoRight
right bracket when output ZFObject's info
Definition ZFObjectCore.h:29
ZFObject declaration.
interface declare
mutex impl for ZFObject
observer types for ZFObject
#define ZFEVENT(YourEvent)
see ZFObject::observerNotify
Definition ZFObjectObserver.h:316
property for ZFObject type
listener data used by ZFListener
Definition ZFArgs.h:20
ZFObject's class info.
Definition ZFClass.h:66
light weight array
Definition ZFCoreArray.h:344
listener as ZFCallback, mostly used by ZFObject::observerNotify
Definition ZFObjectObserver.h:30
base class of all objects
Definition ZFObjectCore.h:196
ZFCompareResult objectCompareValue(ZFObject *anotherObj)
explicitly compare object by logical value, see objectCompare
virtual zfbool invokeT(zfauto &ret, zfstring *errorHint, const zfstring &methodName, ZFObject *param0=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param1=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param2=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param3=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param4=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param5=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param6=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param7=((ZFObject *const &) _ZFP_ZFMP_DEF))
util method to perform ZFDI_invoke, do nothing if fail
void observerRemoveAll(zfidentity eventId)
see observerNotify
virtual zfauto invokeDetail(const zfstring &methodName, const ZFCoreArray< zfauto > &params, zfbool *success=zft_zfnull, zfstring *errorHint=zft_zfnull)
util method to perform ZFDI_invoke, do nothing if fail
virtual void objectOnInit(void)
override this to init your object
void observerNotifyWithSender(ZFObject *customSender, zfidentity eventId, ZFObject *param0=zft_zfnull, ZFObject *param1=zft_zfnull)
see observerNotify
virtual ZFCompareResult objectCompareValueImpl(ZFObject *anotherObj)
see objectCompareValue
Definition ZFObjectCore.h:394
virtual zfbool objectIsInternal(void)
whether this object is internal object or its class is ZFClass::classIsInternal
void observerAdd(zfidentity eventId, const ZFListener &observer, ZFLevel observerLevel=ZFLevelAppNormal)
see observerNotify
virtual void observerOnEvent(const ZFArgs &zfargs)
notified when observerNotify
Definition ZFObjectCore.h:666
void observerNotifyReversely(zfidentity eventId, ZFObject *param0=zft_zfnull, ZFObject *param1=zft_zfnull)
see observerNotify
zfidentity objectHash(void)
get hash of this object
virtual void objectOnRetain(void)
called to retain object
Definition ZFObjectCore.h:769
void observerAddForOnce(zfidentity eventId, const ZFListener &observer, ZFLevel observerLevel=ZFLevelAppNormal)
see observerNotify
zfauto objectTagRemoveAndGet(const zfstring &key)
remove tag, return removed tag or null if not exist
void objectInfoOfInstanceT(zfstring &ret)
see objectInfoOfInstance
Definition ZFObjectCore.h:280
virtual zfidentity objectHashImpl(void)
see objectHash
Definition ZFObjectCore.h:386
virtual void observerOnRemove(zfidentity eventId)
called when remove last observer
zfstring objectInfo(void)
return object info
Definition ZFObjectCore.h:308
virtual void objectOnRelease(void)
called to release object
Definition ZFObjectCore.h:780
void objectTag(const zfstring &key, ZFObject *tag)
used to hold a object for app's use, auto retained
void onDealloc(const ZFListener &impl)
util for script to achieve chained call
Definition ZFObjectCore.h:648
zfindex objectRetainCount(void)
return the object's retain count
Definition ZFObjectCore.h:273
zfbool objectInstanceStateCheck(ZFObjectInstanceState state)
object instance's state
virtual void objectInfoImplAppend(zfstring &ret)
see objectInfo
Definition ZFObjectCore.h:325
ZFObserver & observerHolder(void)
access the internal observer holder
ZFCompareResult objectCompare(ZFObject *anotherObj)
compare with anotherObj
void objectTagRemove(const zfstring &key)
remove tag, same as set tag to null
Definition ZFObjectCore.h:479
void onInit(const ZFListener &impl)
util for script to achieve chained call
Definition ZFObjectCore.h:642
virtual void objectOnDealloc(void)
override this to destroy your object
virtual const ZFClass * classData(void)
get instance's class info
Definition ZFObjectCore.h:197
virtual zfbool objectIsInternalPrivate(void)
whether this object is internal private object or its class is ZFClass::classIsInternalPrivate
zfany objectTag(const zfstring &key)
see objectTag
void objectTagGetAllKeyValue(ZFCoreArray< zfstring > &allKey, ZFCoreArray< zfauto > &allValue)
get all key value
virtual void observerOnAdd(zfidentity eventId)
called when add first observer
virtual zfauto invoke(const zfstring &methodName, ZFObject *param0, ZFObject *param1=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param2=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param3=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param4=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param5=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param6=((ZFObject *const &) _ZFP_ZFMP_DEF), ZFObject *param7=((ZFObject *const &) _ZFP_ZFMP_DEF))
util method to perform ZFDI_invoke, do nothing if fail
void on(const zfstring &eventName, const ZFListener &observer, ZFLevel observerLevel=ZFLevelAppNormal)
util to observerAdd
zfbool objectTagExist(void)
see objectTag, true if this object has tag, and tag can be checked by objectTagGetAllKeyValue
virtual void objectOnDeallocPrepare(void)
called before objectOnDealloc, safe to call virtual functions here
Definition ZFObjectCore.h:751
zfbool objectInitRunning(void)
util method to check whether ZFObjectInstanceStateOnInit or ZFObjectInstanceStateOnInitFinish running
virtual void objectOnInitFinish(void)
called after objectOnInit, safe to call virtual functions here
Definition ZFObjectCore.h:742
void objectTagRemoveAll(void)
remove all tag
virtual zfauto invoke(const zfstring &methodName)
util method to perform ZFDI_invoke, do nothing if fail
virtual void objectPropertyValueOnUpdate(const ZFProperty *property, const void *oldValue)
see E_ObjectPropertyValueOnUpdate
virtual void objectInfoImpl(zfstring &ret)
see objectInfo
Definition ZFObjectCore.h:319
virtual void objectPropertyValueOnReset(const ZFProperty *property)
see E_ObjectPropertyValueOnReset
const ZFClass * classDynamic(void)
dynamic class of this object, see ZFClassDynamicRegister
Definition ZFObjectCore.h:265
void observerRemoveAll(void)
see observerNotify
void on(zfidentity eventId, const ZFListener &observer, ZFLevel observerLevel=ZFLevelAppNormal)
util to observerAdd
Definition ZFObjectCore.h:632
zfbool objectDeallocRunning(void)
util method to check whether ZFObjectInstanceStateOnDeallocPrepare or ZFObjectInstanceStateOnDealloc ...
static zfidentity E_ObjectBeforeDealloc(void)
see ZFObject::observerNotify
void observerNotifyReverselyWithSender(ZFObject *customSender, zfidentity eventId, ZFObject *param0=zft_zfnull, ZFObject *param1=zft_zfnull)
see observerNotify
zfstring objectInfoOfInstance(void)
return a short string describe the object instance
Definition ZFObjectCore.h:293
zfbool observerHasAdd(void)
true if any observer has been added
void observerNotify(zfidentity eventId, ZFObject *param0=zft_zfnull, ZFObject *param1=zft_zfnull)
notify the observer with eventId
void observerRemove(zfidentity eventId, const ZFListener &callback)
see observerNotify
zfbool observerHasAdd(zfidentity eventId)
true if any observer with eventId has been added
virtual ZFCompareResult objectCompareImpl(ZFObject *anotherObj)
see objectCompare
Definition ZFObjectCore.h:390
void objectInfoT(zfstring &ret)
see objectInfo
see ZFObjectLocker
Definition ZFObjectCore.h:876
info for a property for ZFObject, see ZFPROPERTY_RETAIN for more info
Definition ZFProperty.h:27
util method to cast ZFObject types freely
Definition zfany.h:35
a ZFObject holder which would release content object automatically when destroyed
Definition zfautoFwd.h:34
util class to cast ZFObject types freely