ZFFramework
Loading...
Searching...
No Matches
ZFKeyValueContainer.h
Go to the documentation of this file.
1
5
6#ifndef _ZFI_ZFKeyValueContainer_h_
7#define _ZFI_ZFKeyValueContainer_h_
8
9#include "ZFContainer.h"
11
12zfclassFwd _ZFP_ZFKeyValueContainerPrivate;
60zfabstract ZFLIB_ZFCore ZFKeyValueContainer: zfextend ZFContainer {
61 ZFOBJECT_DECLARE_ABSTRACT(ZFKeyValueContainer, ZFContainer)
62
63public:
64 // ============================================================
65 // events
71 ZFEVENT(ContentOnUpdate)
79 ZFEVENT(ContentOnAdd)
87 ZFEVENT(ContentOnRemove)
88
89public:
94
95public:
103 ZF_IN ZFObject *key
104 , ZF_IN ZFObject *value
106
107public:
111 virtual void addFrom(ZF_IN ZFKeyValueContainer *another) zfpurevirtual;
112
113private:
116 virtual zfiter iterAdd(ZF_IN ZFObject *value) {
118 return zfnull;
119 }
121 virtual zfiter iterAdd(
122 ZF_IN ZFObject *value
123 , ZF_IN_OUT zfiter &it
124 ) {
126 return zfnull;
127 }
129 virtual void addFrom(ZF_IN ZFContainer *another) {
130 if(another != zfnull) {
131 zfself *tmp = zfcast(zfself *, another);
132 if(tmp == zfnull) {
134 return;
135 }
136 this->addFrom(tmp);
137 }
138 }
140
141public:
145 ZFMETHOD_DECLARE_3(void, objectInfoOfContentT
146 , ZFMP_IN_OUT(zfstring &, ret)
147 , ZFMP_IN_OPT(zfindex, maxCount, zfindexMax())
152 , ZFMP_IN_OPT(zfindex, maxCount, zfindexMax())
155
156protected:
158 virtual inline void contentOnUpdate(void) {
160 }
161
162 virtual inline void contentOnAdd(
163 ZF_IN ZFObject *key
164 , ZF_IN ZFObject *value
165 ) {
167 }
168
169 virtual inline void contentOnRemove(
170 ZF_IN ZFObject *key
171 , ZF_IN ZFObject *value
172 ) {
174 }
175
176protected:
181 ZF_IN const ZFSerializableData &serializableData
182 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
183 , ZF_OUT_OPT ZFSerializableData *outErrorPos = zfnull
184 );
198 ZF_IN_OUT ZFSerializableData &serializableData
199 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
200 , ZF_IN_OPT ZFSerializable *refOwner = zfnull
201 );
202protected:
207 ZF_IN_OUT ZFSerializableData &serializableData
208 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
209 , ZF_IN_OPT ZFSerializable *refOwner = zfnull
210 );
211
212protected:
215 ZF_IN const zfchar *src
216 , ZF_IN_OPT zfindex srcLen = zfindexMax()
217 , ZF_OUT_OPT zfstring *errorHint = zfnull
218 );
222 , ZF_OUT_OPT zfstring *errorHint = zfnull
223 );
224
225protected:
227 virtual void objectOnDeallocPrepare(void);
228
229public:
231 virtual void objectInfoImpl(ZF_IN_OUT zfstring &ret) {
232 this->objectInfoOfContentT(ret, 5);
233 }
234
236 virtual ZFCompareResult objectCompareValueImpl(ZF_IN ZFObject *anotherObj);
237};
238
240#endif // #ifndef _ZFI_ZFKeyValueContainer_h_
241
container of ZFObject
#define ZFLIB_ZFCore
used to export symbols
Definition ZFCoreEnvDef.h:30
#define ZFCoreCriticalNotSupported()
log that likes "[file function (line)] not supported"
Definition ZFCoreLog_CommonLog.h:143
_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
#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
#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
#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 ZFTokenForKeyValueContainerDefault()
see ZFTokenForKeyValueContainer, modifyable, ZFTokenForKeyValueContainerTrim by default
Definition ZFToken.h:214
container of ZFObject
Definition ZFContainer.h:47
virtual zfbool serializableOnSerializeToDataWithRef(ZFSerializableData &serializableData, zfstring *outErrorHint=zft_zfnull, ZFSerializable *refOwner=zft_zfnull)
see ZFKeyValueContainer::serializableOnSerializeToData
virtual zfbool serializableOnCheck(void)
see serializable
virtual zfbool serializableOnSerializeFromString(const zfchar *src, zfindex srcLen=((zfindex) -1), zfstring *errorHint=zft_zfnull)
see serializeFromString
virtual zfbool serializableOnSerializeToData(ZFSerializableData &serializableData, zfstring *outErrorHint=zft_zfnull, ZFSerializable *refOwner=zft_zfnull)
see ZFSerializable::serializableOnSerializeToData
virtual void contentOnUpdate(void)
see E_ContentOnUpdate
Definition ZFKeyValueContainer.h:158
virtual void objectInfoOfContentT(zfstring &ret, zfindex maxCount=(((zfindex) -1)), const ZFTokenForKeyValueContainer &token=(_ZFP_ZFTokenForKeyValueContainerDefault))
return a short string describe the content
virtual ZFCompareResult objectCompareValueImpl(ZFObject *anotherObj)
see objectCompareValue
static zfidentity E_ContentOnAdd(void)
see ZFObject::observerNotify
virtual zfstring objectInfoOfContent(zfindex maxCount=(((zfindex) -1)), const ZFTokenForKeyValueContainer &token=(_ZFP_ZFTokenForKeyValueContainerDefault))
see objectInfoOfContentT
static zfidentity E_ContentOnUpdate(void)
see ZFObject::observerNotify
virtual zfbool serializableOnSerializeToString(zfstring &ret, zfstring *errorHint=zft_zfnull)
see serializeFromString
virtual void addFrom(ZFKeyValueContainer *another)=0
add data from another container
virtual zfiter iterAdd(ZFObject *key, ZFObject *value)=0
add key value to tail, see zfiter
virtual void contentOnAdd(ZFObject *key, ZFObject *value)
see E_ContentOnAdd
Definition ZFKeyValueContainer.h:162
virtual void objectInfoImpl(zfstring &ret)
see objectInfo
Definition ZFKeyValueContainer.h:231
static zfidentity E_ContentOnRemove(void)
see ZFObject::observerNotify
virtual void contentOnRemove(ZFObject *key, ZFObject *value)
see E_ContentOnRemove
Definition ZFKeyValueContainer.h:169
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 void objectOnDeallocPrepare(void)
called before objectOnDealloc, safe to call virtual functions here
virtual zfany iterKey(const zfiter &it)=0
get key value pair with iter, see zfiter
base class of all objects
Definition ZFObjectCore.h:195
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:113
util method to cast ZFObject types freely
Definition zfany.h:35
iterator for ZFFramework
Definition zfiter.h:40
#define zfcast(T_To, obj)
safely cast ZFObject types, return null if not desired type
Definition zfcast.h:24