ZFFramework
 
Loading...
Searching...
No Matches
ZFContainer Class Referenceabstract

container of ZFObject More...

#include <ZFContainer.h>

Inheritance diagram for ZFContainer:
ZFObject ZFSerializable ZFCopyable ZFIterable ZFInterface ZFInterface ZFInterface ZFArray ZFHashSet ZFSet

Public Member Functions

virtual const ZFClassclassData (void)
 get instance's class info
 
virtual void addFrom (ZFContainer *another)=0
 add data from another container
 
virtual void objectInfoOfContentT (zfstring &ret, zfindex maxCount=(((zfindex) -1)), const ZFTokenForContainer &token=(_ZFP_ZFTokenForContainerDefault))
 return a short string describe the content
 
virtual zfstring objectInfoOfContent (zfindex maxCount=(((zfindex) -1)), const ZFTokenForContainer &token=(_ZFP_ZFTokenForContainerDefault))
 see objectInfoOfContentT
 
virtual void objectOnDeallocPrepare (void)
 see ZFObject::objectOnDeallocPrepare, remove all contents before dealloc
 
virtual void objectInfoImpl (zfstring &ret)
 see objectInfo
 
virtual ZFCompareResult objectCompareValueImpl (ZFObject *anotherObj)
 see objectCompareValue
 
- Public Member Functions inherited from ZFObject
zfindex objectRetainCount (void)
 return the object's retain count
 
void objectInfoOfInstanceT (zfstring &ret)
 see objectInfoOfInstance
 
zfstring objectInfoOfInstance (void)
 return a short string describe the object instance
 
void objectInfoT (zfstring &ret)
 see objectInfo
 
zfstring objectInfo (void)
 return object info
 
zfidentity objectHash (void)
 get hash of this object
 
ZFCompareResult objectCompare (ZFObject *anotherObj)
 compare with anotherObj
 
ZFCompareResult objectCompareValue (ZFObject *anotherObj)
 explicitly compare object by logical value, see objectCompare
 
virtual zfauto invoke (const zfstring &methodName)
 util method to perform ZFDI_invoke, do nothing if fail
 
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
 
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
 
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
 
zfbool objectTagExist (void)
 see objectTag, true if this object has tag, and tag can be checked by objectTagGetAllKeyValue
 
void objectTag (const zfstring &key, ZFObject *tag)
 used to hold a object for app's use, auto retained
 
zfany objectTag (const zfstring &key)
 see objectTag
 
void objectTagGetAllKeyValue (ZFCoreArray< zfstring > &allKey, ZFCoreArray< zfauto > &allValue)
 get all key value
 
void objectTagRemove (const zfstring &key)
 remove tag, same as set tag to null
 
zfauto objectTagRemoveAndGet (const zfstring &key)
 remove tag, return removed tag or null if not exist
 
void objectTagRemoveAll (void)
 remove all tag
 
void observerAdd (zfidentity eventId, const ZFListener &observer, ZFLevel observerLevel=ZFLevelAppNormal)
 see observerNotify
 
void observerAddForOnce (zfidentity eventId, const ZFListener &observer, ZFLevel observerLevel=ZFLevelAppNormal)
 see observerNotify
 
void observerRemove (zfidentity eventId, const ZFListener &callback)
 see observerNotify
 
void observerRemoveAll (zfidentity eventId)
 see observerNotify
 
void observerRemoveAll (void)
 see observerNotify
 
zfbool observerHasAdd (void)
 true if any observer has been added
 
zfbool observerHasAdd (zfidentity eventId)
 true if any observer with eventId has been added
 
void observerNotify (zfidentity eventId, ZFObject *param0=zft_zfnull, ZFObject *param1=zft_zfnull)
 notify the observer with eventId
 
void observerNotifyWithSender (ZFObject *customSender, zfidentity eventId, ZFObject *param0=zft_zfnull, ZFObject *param1=zft_zfnull)
 see observerNotify
 
void observerNotifyReversely (zfidentity eventId, ZFObject *param0=zft_zfnull, ZFObject *param1=zft_zfnull)
 see observerNotify
 
void observerNotifyReverselyWithSender (ZFObject *customSender, zfidentity eventId, ZFObject *param0=zft_zfnull, ZFObject *param1=zft_zfnull)
 see observerNotify
 
ZFObserverobserverHolder (void)
 access the internal observer holder
 
void on (const zfstring &eventName, const ZFListener &observer, ZFLevel observerLevel=ZFLevelAppNormal)
 util to observerAdd
 
void on (zfidentity eventId, const ZFListener &observer, ZFLevel observerLevel=ZFLevelAppNormal)
 util to observerAdd
 
void onInit (const ZFListener &impl)
 util for script to achieve chained call
 
void onDealloc (const ZFListener &impl)
 util for script to achieve chained call
 
zfbool objectInstanceStateCheck (ZFObjectInstanceState state)
 object instance's state
 
zfbool objectInitRunning (void)
 util method to check whether ZFObjectInstanceStateOnInit or ZFObjectInstanceStateOnInitFinish running
 
zfbool objectDeallocRunning (void)
 util method to check whether ZFObjectInstanceStateOnDeallocPrepare or ZFObjectInstanceStateOnDealloc running
 
virtual zfbool objectIsInternal (void)
 whether this object is internal object or its class is ZFClass::classIsInternal
 
virtual zfbool objectIsInternalPrivate (void)
 whether this object is internal private object or its class is ZFClass::classIsInternalPrivate
 
- Public Member Functions inherited from ZFSerializable
zfbool serializable (void)
 true if object is currently serializable, see ZFSerializable
 
zfbool serializeFromData (const ZFSerializableData &serializableData, zfstring *outErrorHint=zft_zfnull, ZFSerializableData *outErrorPos=zft_zfnull)
 serialize from data, see ZFSerializable
 
zfbool serializeToData (ZFSerializableData &serializableData, zfstring *outErrorHint=zft_zfnull, ZFSerializable *refOwner=zft_zfnull)
 serialize to data, see ZFSerializable
 
zfbool serializeFromString (const zfchar *src, zfindex srcLen=((zfindex) -1), zfstring *errorHint=zft_zfnull)
 serialize from string, return false by default
 
zfbool serializeToString (zfstring &ret, zfstring *errorHint=zft_zfnull)
 see serializeFromString
 
void serializablePropertyTypeGetAll (ZFCoreArray< const ZFProperty * > &notSerializableProperty, ZFCoreArray< const ZFProperty * > &serializableProperty, ZFCoreArray< const ZFProperty * > &embededProperty)
 return a list of each type of property, for debug use only
 
zfstring serializablePropertyTypeInfo (void)
 return info of serializablePropertyTypeGetAll, for debug use only
 
void serializableGetAllSerializablePropertyT (ZFCoreArray< const ZFProperty * > &ret)
 see serializableGetAllSerializableProperty
 
ZFCoreArray< const ZFProperty * > serializableGetAllSerializableProperty (void)
 get all serializable property, usually for debug only, see serializableOnCheckPropertyType
 
void serializableGetAllSerializableEmbededPropertyT (ZFCoreArray< const ZFProperty * > &ret)
 see serializableGetAllSerializableEmbededProperty
 
ZFCoreArray< const ZFProperty * > serializableGetAllSerializableEmbededProperty (void)
 get all serializable embeded property, usually for debug only, see serializableOnCheckPropertyType
 
virtual void serializableInfoT (zfstring &ret)
 get info as a serializable
 
virtual zfstring serializableInfo (void)
 see serializableInfoT
 
- Public Member Functions inherited from ZFInterface
virtual ZFObjecttoObject (void)=0
 convert to ZFObject type
 
- Public Member Functions inherited from ZFCopyable
zfautoT< ZFCopyablecopy (void)
 return a copy of this object
 
void copyFrom (ZFObject *anotherObj)
 see copy, anotherObj must be same type as this object (by classData), otherwise, do nothing
 
- Public Member Functions inherited from ZFIterable
virtual zfindex count (void)=0
 return total count of this iterable
 
virtual zfiter iter (void)=0
 return a iter, see zfiter
 
virtual zfiter iterFind (ZFObject *element)=0
 find element
 
virtual zfany iterValue (const zfiter &it)=0
 get value by iter, see zfiter
 
virtual void iterValue (zfiter &it, ZFObject *value)=0
 set value at iter, see zfiter
 
virtual void iterRemove (zfiter &it)=0
 remove value at iter, see zfiter
 
virtual void removeAll (void)=0
 remove all contents of this iterable
 
virtual void iterAdd (ZFObject *value)=0
 add value to tail
 
virtual void iterAdd (ZFObject *value, zfiter &it)=0
 add value before iter, see zfiter
 

Static Public Member Functions

static const ZFClassClassData (void)
 get class info
 
static zfidentity E_ContentOnUpdate (void)
 see ZFObject::observerNotify
 
static zfidentity E_ContentOnAdd (void)
 see ZFObject::observerNotify
 
static zfidentity E_ContentOnRemove (void)
 see ZFObject::observerNotify
 
- Static Public Member Functions inherited from ZFObject
static const ZFClassClassData (void)
 get class info
 
static zfidentity E_ObjectBeforeAlloc (void)
 see ZFObject::observerNotify
 
static zfidentity E_ObjectAfterAlloc (void)
 see ZFObject::observerNotify
 
static zfidentity E_ObjectBeforeDealloc (void)
 see ZFObject::observerNotify
 
static zfidentity E_ObjectPropertyValueOnUpdate (void)
 see ZFObject::observerNotify
 
static zfidentity E_ObjectPropertyValueOnReset (void)
 see ZFObject::observerNotify
 
- Static Public Member Functions inherited from ZFSerializable
static const ZFClassClassData (void)
 get class info
 
- Static Public Member Functions inherited from ZFInterface
static const ZFClassClassData (void)
 get class info
 
- Static Public Member Functions inherited from ZFCopyable
static const ZFClassClassData (void)
 get class info
 
- Static Public Member Functions inherited from ZFIterable
static const ZFClassClassData (void)
 get class info
 

Protected Types

typedef ZFObject zfsuper
 class ref to super
 
typedef ZFContainer zfself
 class ref to self
 
- Protected Types inherited from ZFObject
typedef _ZFP_Obj_Base zfsuper
 class ref to super
 
typedef ZFObject zfself
 class ref to self
 
- Protected Types inherited from ZFSerializable
typedef ZFInterface zfsuper
 typedef for super (always ZFInterface for an interface type)
 
typedef ZFSerializable zfself
 typedef for self
 
- Protected Types inherited from ZFInterface
typedef _ZFP_ObjI_Base zfsuper
 typedef for super (always ZFInterface for an interface type)
 
typedef ZFInterface zfself
 typedef for self
 
- Protected Types inherited from ZFCopyable
typedef ZFInterface zfsuper
 typedef for super (always ZFInterface for an interface type)
 
typedef ZFCopyable zfself
 typedef for self
 
- Protected Types inherited from ZFIterable
typedef ZFInterface zfsuper
 typedef for super (always ZFInterface for an interface type)
 
typedef ZFIterable zfself
 typedef for self
 

Protected Member Functions

virtual void contentOnUpdate (void)
 see E_ContentOnUpdate
 
virtual void contentOnAdd (ZFObject *element)
 see E_ContentOnAdd
 
virtual void contentOnRemove (ZFObject *element)
 see E_ContentOnRemove
 
virtual zfbool serializableOnCheck (void)
 see serializable
 
virtual zfbool serializableOnSerializeFromData (const ZFSerializableData &serializableData, zfstring *outErrorHint=zft_zfnull, ZFSerializableData *outErrorPos=zft_zfnull)
 for serializable data that has "category" attribute, ZFSerializable would ignore it and leave it to subclass to resolve, see ZFSerializable
 
virtual zfbool serializableOnSerializeToData (ZFSerializableData &serializableData, zfstring *outErrorHint=zft_zfnull, ZFSerializable *refOwner=zft_zfnull)
 see ZFSerializable::serializableOnSerializeToData
 
virtual zfbool serializableOnSerializeToDataWithRef (ZFSerializableData &serializableData, zfstring *outErrorHint=zft_zfnull, ZFSerializable *refOwner=zft_zfnull)
 see serializableOnSerializeToData
 
virtual void copyableOnCopyFrom (ZFObject *anotherObj)
 called by copy to copy contents from anotherObj
 
- Protected Member Functions inherited from ZFObject
virtual void objectInfoImplAppend (zfstring &ret)
 see objectInfo
 
virtual zfidentity objectHashImpl (void)
 see objectHash
 
virtual ZFCompareResult objectCompareImpl (ZFObject *anotherObj)
 see objectCompare
 
virtual void observerOnAdd (zfidentity eventId)
 called when add first observer
 
virtual void observerOnRemove (zfidentity eventId)
 called when remove last observer
 
virtual void observerOnEvent (const ZFArgs &zfargs)
 notified when observerNotify
 
virtual void objectOnInit (void)
 override this to init your object
 
virtual void objectOnInitFinish (void)
 called after objectOnInit, safe to call virtual functions here
 
virtual void objectOnDealloc (void)
 override this to destroy your object
 
virtual void objectOnRetain (void)
 called to retain object
 
virtual void objectOnRelease (void)
 called to release object
 
virtual void objectPropertyValueOnUpdate (const ZFProperty *property, const void *oldValue)
 see E_ObjectPropertyValueOnUpdate
 
virtual void objectPropertyValueOnReset (const ZFProperty *property)
 see E_ObjectPropertyValueOnReset
 
- Protected Member Functions inherited from ZFSerializable
virtual ZFSerializablePropertyType serializableOnCheckPropertyType (const ZFProperty *property)
 check the property type that serializable should do what while serializing
 
virtual zfbool serializableOnSerializePropertyFromData (const ZFSerializableData &propertyData, const ZFProperty *property, zfstring *outErrorHint=zft_zfnull, ZFSerializableData *outErrorPos=zft_zfnull)
 see serializableOnCheckPropertyType, usually you have no need to override this method, see ZFSerializable
 
virtual zfbool serializableOnSerializePropertyToData (ZFSerializableData &ownerData, const ZFProperty *property, zfstring *outErrorHint=zft_zfnull, ZFSerializable *refOwner=zft_zfnull)
 see serializableOnCheckPropertyType, usually you have no need to override this method, see ZFSerializable
 
virtual zfbool serializableOnSerializeEmbededPropertyFromData (const ZFSerializableData &propertyData, const ZFProperty *property, zfstring *outErrorHint=zft_zfnull, ZFSerializableData *outErrorPos=zft_zfnull)
 see serializableOnCheckPropertyType, usually you have no need to override this method, see ZFSerializable
 
virtual zfbool serializableOnSerializeEmbededPropertyToData (ZFSerializableData &ownerData, const ZFProperty *property, ZFSerializable *refOwner, zfstring *outErrorHint=zft_zfnull)
 see serializableOnCheckPropertyType, usually you have no need to override this method, see ZFSerializable
 
virtual zfbool serializableOnSerializeFromString (const zfchar *src, zfindex srcLen=((zfindex) -1), zfstring *errorHint=zft_zfnull)
 see serializeFromString
 
virtual zfbool serializableOnSerializeToString (zfstring &ret, zfstring *errorHint=zft_zfnull)
 see serializeFromString
 

Additional Inherited Members

- Public Types inherited from ZFObject
enum  
 

Detailed Description

container of ZFObject

automatically retain the object when add, and release it after remove

a container can not contain null, you may want to use ZFNull if necessary

a container is serializable only if all of it's content are serializable, for performance, you should not check the serializable state too frequently
clear contents before serialize from data
whether contents of the container is sorted, is depends on subclass

serializable data:

<ContainerClass> // container class
<ElementClass0 /> // each elements
<ElementClass1 />
...
</ContainerClass>
Note
a container would have special serializing step with ref or style logic, see serializableOnSerializeToData for more info

Member Function Documentation

◆ classData()

virtual const ZFClass * ZFContainer::classData ( void )
inlinevirtual

get instance's class info

Reimplemented from ZFObject.

Reimplemented in ZFArray, ZFHashSet, and ZFSet.

◆ E_ContentOnUpdate()

static zfidentity ZFContainer::E_ContentOnUpdate ( void )
static

see ZFObject::observerNotify

called when element added or removed or order changed

◆ E_ContentOnAdd()

static zfidentity ZFContainer::E_ContentOnAdd ( void )
static

see ZFObject::observerNotify

called when element added
param0 is the element added to this container

◆ E_ContentOnRemove()

static zfidentity ZFContainer::E_ContentOnRemove ( void )
static

see ZFObject::observerNotify

called when element removed
param0 is the element removed from this container

◆ addFrom()

virtual void ZFContainer::addFrom ( ZFContainer * another)
pure virtual

add data from another container

Implemented in ZFArray, ZFHashSet, and ZFSet.

◆ serializableOnCheck()

virtual zfbool ZFContainer::serializableOnCheck ( void )
protectedvirtual

see serializable

Reimplemented from ZFSerializable.

◆ serializableOnSerializeFromData()

virtual zfbool ZFContainer::serializableOnSerializeFromData ( const ZFSerializableData & serializableData,
zfstring * outErrorHint = zft_zfnull,
ZFSerializableData * outErrorPos = zft_zfnull )
protectedvirtual

for serializable data that has "category" attribute, ZFSerializable would ignore it and leave it to subclass to resolve, see ZFSerializable

while overriding this method, you should call super first, and then check whether super has resolved the data
if subclass should resolve the category, you should mark data as resolved and return whether resolve success
if not, subclass should leave the data unresoved and return true

Reimplemented from ZFSerializable.

◆ serializableOnSerializeToData()

virtual zfbool ZFContainer::serializableOnSerializeToData ( ZFSerializableData & serializableData,
zfstring * outErrorHint = zft_zfnull,
ZFSerializable * refOwner = zft_zfnull )
protectedvirtual

see ZFSerializable::serializableOnSerializeToData

while serializing a container to data with ref or style logic, it's hard to auto serialize all contents, to workaround this problem, we would serialize all contents normally if no ref logic found, and would call serializableOnSerializeToDataWithRef otherwise, you should override serializableOnSerializeToDataWithRef if you have different ref logic

Reimplemented from ZFSerializable.

◆ copyableOnCopyFrom()

virtual void ZFContainer::copyableOnCopyFrom ( ZFObject * anotherObj)
protectedvirtual

called by copy to copy contents from anotherObj

anotherObj is ensured the same type as self, ensured not null, and ensured not same instance of this
by default this method would do nothing for performance

Reimplemented from ZFCopyable.

◆ objectOnDeallocPrepare()

virtual void ZFContainer::objectOnDeallocPrepare ( void )
virtual

see ZFObject::objectOnDeallocPrepare, remove all contents before dealloc

Reimplemented from ZFObject.

◆ objectInfoImpl()

virtual void ZFContainer::objectInfoImpl ( zfstring & ret)
inlinevirtual

see objectInfo

Reimplemented from ZFObject.

◆ objectCompareValueImpl()

virtual ZFCompareResult ZFContainer::objectCompareValueImpl ( ZFObject * anotherObj)
virtual

see objectCompareValue

Reimplemented from ZFObject.


The documentation for this class was generated from the following file: