ZFFramework
Loading...
Searching...
No Matches
ZFContainer.h
Go to the documentation of this file.
1
5
6#ifndef _ZFI_ZFContainer_h_
7#define _ZFI_ZFContainer_h_
8
9#include "ZFObject.h"
10
12
47zfabstract ZFLIB_ZFCore ZFContainer : zfextend ZFStyle {
48 ZFOBJECT_DECLARE_ABSTRACT(ZFContainer, ZFStyle)
49
50public:
51 // ============================================================
52 // events
58 ZFEVENT(ContentOnUpdate)
65 ZFEVENT(ContentOnAdd)
72 ZFEVENT(ContentOnRemove)
73
74public:
82 virtual zfiter iter(void) zfpurevirtual;
83
87 virtual zfiter iterFind(ZF_IN ZFObject *element) zfpurevirtual;
88
95
96public:
100 virtual void iterValue(
101 ZF_IN_OUT zfiter &it
102 , ZF_IN ZFObject *value
111 virtual void removeAll(void) zfpurevirtual;
112
116 virtual zfiter iterAdd(ZF_IN ZFObject *value) zfpurevirtual;
122 ZF_IN ZFObject *value
123 , ZF_IN_OUT zfiter &it
125
126public:
130 virtual void addFrom(ZF_IN ZFContainer *another) zfpurevirtual;
131
132public:
137 , ZFMP_IN_OUT(zfstring &, ret)
138 , ZFMP_IN_OPT(zfindex, maxCount, zfindexMax())
143 , ZFMP_IN_OPT(zfindex, maxCount, zfindexMax())
146
147protected:
149 virtual inline void contentOnUpdate(void) {
151 }
152
153 virtual inline void contentOnAdd(ZF_IN ZFObject *element) {
155 }
156
157 virtual inline void contentOnRemove(ZF_IN ZFObject *element) {
159 }
160
161protected:
166 ZF_IN const ZFSerializableData &serializableData
167 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
168 , ZF_OUT_OPT ZFSerializableData *outErrorPos = zfnull
169 );
183 ZF_IN_OUT ZFSerializableData &serializableData
184 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
185 , ZF_IN_OPT ZFSerializable *refOwner = zfnull
186 );
187protected:
192 ZF_IN_OUT ZFSerializableData &serializableData
193 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
194 , ZF_IN_OPT ZFSerializable *refOwner = zfnull
195 );
196
197protected:
200 ZF_IN const zfchar *src
201 , ZF_IN_OPT zfindex srcLen = zfindexMax()
202 , ZF_OUT_OPT zfstring *errorHint = zfnull
203 );
207 , ZF_OUT_OPT zfstring *errorHint = zfnull
208 );
209
210protected:
212 virtual void styleableOnCopyFrom(ZF_IN ZFObject *anotherStyleable);
213
215 virtual void objectOnDeallocPrepare(void);
216
218 virtual inline void objectInfoImpl(ZF_IN_OUT zfstring &ret) {
219 this->objectInfoOfContentT(ret, 10);
220 }
221
223 virtual ZFCompareResult objectCompareValueImpl(ZF_IN ZFObject *anotherObj);
224};
225
227#endif // #ifndef _ZFI_ZFContainer_h_
228
#define ZFLIB_ZFCore
used to export symbols
Definition ZFCoreEnvDef.h:30
_ZFT_t_zfchar zfchar
char wrapper
Definition ZFCoreTypeDef_CharType.h:17
#define ZF_OUT_OPT
dummy macro that shows the param used as optional output
Definition ZFCoreTypeDef_ClassType.h:208
#define zfextend
dummy macro shows class inherit from another
Definition ZFCoreTypeDef_ClassType.h:53
#define zfpurevirtual
dummy macro shows that a method is pure virtual method
Definition ZFCoreTypeDef_ClassType.h:68
#define zfoverride
dummy macro shows that method override parent's method
Definition ZFCoreTypeDef_ClassType.h:58
#define ZF_IN
dummy macro that shows the param used as required input
Definition ZFCoreTypeDef_ClassType.h:196
#define ZF_IN_OPT
dummy macro that shows the param used as optional input
Definition ZFCoreTypeDef_ClassType.h:200
#define ZF_IN_OUT
dummy macro that shows the param used as required input and output
Definition ZFCoreTypeDef_ClassType.h:212
_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
#define zfindexMax()
(zfindex)-1, indicate a max index value, see zfindex
Definition ZFCoreTypeDef_CoreType.h:159
#define zfnull
same as NULL, defined for future use
Definition ZFCoreTypeDef_CoreType.h:88
ZFCompareResult
compare result of two ZFObjects
Definition ZFCoreTypeDef_OtherType.h:28
zft_zfstring< zfchar > zfstring
see zft_zfstring
Definition ZFCoreTypeDef_StringType.h:15
#define ZFMP_IN_OUT(ParamType, paramName)
see ZFMP_IN
Definition ZFMethod.h:117
#define ZFMP_IN_OPT(ParamType, paramName, DefaultValue)
see ZFMP_IN
Definition ZFMethod.h:108
#define ZFMETHOD_DECLARE_2(ReturnType, MethodName, ZFMP_0, ZFMP_1)
see ZFMethod
Definition ZFMethodDeclare.h:1025
#define ZFMETHOD_DECLARE_3(ReturnType, MethodName, ZFMP_0, ZFMP_1, ZFMP_2)
see ZFMethod
Definition ZFMethodDeclare.h:1206
#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 related include.
#define zfabstract
typename for class showing that its abstract
Definition ZFObjectClassTypeFwd.h:42
#define ZFOBJECT_DECLARE_ABSTRACT(ChildClass, SuperClass,...)
necessary for every abstract class inherit from ZFObject
Definition ZFObjectDeclare.h:148
#define ZFEVENT(YourEvent)
see ZFObject::observerNotify
Definition ZFObjectObserver.h:316
#define ZFTokenForContainerDefault()
see ZFTokenForContainer, modifyable, ZFTokenForContainerTrim by default
Definition ZFToken.h:107
virtual void iterRemove(zfiter &it)=0
remove value at iter, see zfiter
virtual zfiter iterFind(ZFObject *element)=0
find element
virtual zfbool serializableOnSerializeToDataWithRef(ZFSerializableData &serializableData, zfstring *outErrorHint=zft_zfnull, ZFSerializable *refOwner=zft_zfnull)
see serializableOnSerializeToData
static zfidentity E_ContentOnAdd(void)
see ZFObject::observerNotify
virtual zfbool serializableOnCheck(void)
see serializable
virtual zfiter iterAdd(ZFObject *value)=0
add value to tail
virtual void contentOnUpdate(void)
see E_ContentOnUpdate
Definition ZFContainer.h:149
virtual zfbool serializableOnSerializeToString(zfstring &ret, zfstring *errorHint=zft_zfnull)
see serializeFromString
virtual zfany iterValue(const zfiter &it)=0
get value by iter, see zfiter
virtual zfstring objectInfoOfContent(zfindex maxCount=(((zfindex) -1)), const ZFTokenForContainer &token=(_ZFP_ZFTokenForContainerDefault))
see objectInfoOfContentT
virtual void addFrom(ZFContainer *another)=0
add data from another container
virtual ZFCompareResult objectCompareValueImpl(ZFObject *anotherObj)
see objectCompareValue
virtual void objectInfoImpl(zfstring &ret)
see objectInfo
Definition ZFContainer.h:218
static zfidentity E_ContentOnRemove(void)
see ZFObject::observerNotify
virtual void contentOnAdd(ZFObject *element)
see E_ContentOnAdd
Definition ZFContainer.h:153
virtual zfbool serializableOnSerializeFromString(const zfchar *src, zfindex srcLen=((zfindex) -1), zfstring *errorHint=zft_zfnull)
see serializeFromString
virtual void contentOnRemove(ZFObject *element)
see E_ContentOnRemove
Definition ZFContainer.h:157
static zfidentity E_ContentOnUpdate(void)
see ZFObject::observerNotify
virtual void styleableOnCopyFrom(ZFObject *anotherStyleable)
for subclass to achieve custom style copy step, called by copyFrom, see ZFStyleable
virtual void objectOnDeallocPrepare(void)
called before objectOnDealloc, safe to call virtual functions here
virtual void removeAll(void)=0
remove all contents of this iterable
virtual zfbool serializableOnSerializeToData(ZFSerializableData &serializableData, zfstring *outErrorHint=zft_zfnull, ZFSerializable *refOwner=zft_zfnull)
see ZFSerializable::serializableOnSerializeToData
virtual void objectInfoOfContentT(zfstring &ret, zfindex maxCount=(((zfindex) -1)), const ZFTokenForContainer &token=(_ZFP_ZFTokenForContainerDefault))
return a short string describe the content
virtual zfindex count(void)=0
return total count of this iterable
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 s...
virtual zfiter iter(void)=0
return a iter, see zfiter
void observerNotify(zfidentity eventId, ZFObject *param0=zft_zfnull, ZFObject *param1=zft_zfnull)
notify the observer with eventId
ZFSerializable's data container, see ZFSerializable.
Definition ZFSerializableData.h:74
util class to hold string tokens
Definition ZFToken.h:17
util method to cast ZFObject types freely
Definition zfany.h:35
iterator for ZFFramework
Definition zfiter.h:40