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;
53zfabstract ZFLIB_ZFCore ZFKeyValueContainer: zfextend ZFContainer {
54 ZFOBJECT_DECLARE_ABSTRACT(ZFKeyValueContainer, ZFContainer)
55
56public:
57 // ============================================================
58 // events
64 ZFEVENT(ContentOnUpdate)
72 ZFEVENT(ContentOnAdd)
80 ZFEVENT(ContentOnRemove)
81
82public:
87
88public:
95 virtual zfiter iterAdd(
96 ZF_IN ZFObject *key
97 , ZF_IN ZFObject *value
99
100public:
104 virtual void addFrom(ZF_IN ZFKeyValueContainer *another) zfpurevirtual;
105
106private:
109 virtual zfiter iterAdd(ZF_IN ZFObject *value) {
111 return zfnull;
112 }
114 virtual zfiter iterAdd(
115 ZF_IN ZFObject *value
116 , ZF_IN_OUT zfiter &it
117 ) {
119 return zfnull;
120 }
122 virtual void addFrom(ZF_IN ZFContainer *another) {
123 if(another != zfnull) {
124 zfself *tmp = zfcast(zfself *, another);
125 if(tmp == zfnull) {
127 return;
128 }
129 this->addFrom(tmp);
130 }
131 }
133
134public:
138 ZFMETHOD_DECLARE_3(void, objectInfoOfContentT
139 , ZFMP_IN_OUT(zfstring &, ret)
140 , ZFMP_IN_OPT(zfindex, maxCount, zfindexMax())
145 , ZFMP_IN_OPT(zfindex, maxCount, zfindexMax())
148
149protected:
151 virtual inline void contentOnUpdate(void) {
153 }
154
155 virtual inline void contentOnAdd(
156 ZF_IN ZFObject *key
157 , ZF_IN ZFObject *value
158 ) {
160 }
161
162 virtual inline void contentOnRemove(
163 ZF_IN ZFObject *key
164 , ZF_IN ZFObject *value
165 ) {
167 }
168
169protected:
174 ZF_IN const ZFSerializableData &serializableData
175 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
176 , ZF_OUT_OPT ZFSerializableData *outErrorPos = zfnull
177 );
191 ZF_IN_OUT ZFSerializableData &serializableData
192 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
193 , ZF_IN_OPT ZFSerializable *refOwner = zfnull
194 );
195protected:
200 ZF_IN_OUT ZFSerializableData &serializableData
201 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
202 , ZF_IN_OPT ZFSerializable *refOwner = zfnull
203 );
204
205protected:
207 virtual void objectOnDeallocPrepare(void);
208
209public:
211 virtual void objectInfoImpl(ZF_IN_OUT zfstring &ret) {
212 this->objectInfoOfContentT(ret, 5);
213 }
214
216 virtual ZFCompareResult objectCompareValueImpl(ZF_IN ZFObject *anotherObj);
217};
218
220#endif // #ifndef _ZFI_ZFKeyValueContainer_h_
221
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
#define ZF_OUT_OPT
dummy macro that shows the param used as optional output
Definition ZFCoreTypeDef_ClassType.h:203
#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:191
#define ZF_IN_OPT
dummy macro that shows the param used as optional input
Definition ZFCoreTypeDef_ClassType.h:195
#define ZF_IN_OUT
dummy macro that shows the param used as required input and output
Definition ZFCoreTypeDef_ClassType.h:207
#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:149
#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:41
virtual zfbool serializableOnSerializeToDataWithRef(ZFSerializableData &serializableData, zfstring *outErrorHint=zft_zfnull, ZFSerializable *refOwner=zft_zfnull)
see ZFKeyValueContainer::serializableOnSerializeToData
virtual zfbool serializableOnCheck(void)
see serializable
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:151
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 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:155
virtual void objectInfoImpl(zfstring &ret)
see objectInfo
Definition ZFKeyValueContainer.h:211
static zfidentity E_ContentOnRemove(void)
see ZFObject::observerNotify
virtual void contentOnRemove(ZFObject *key, ZFObject *value)
see E_ContentOnRemove
Definition ZFKeyValueContainer.h:162
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