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:
68
69public:
76 virtual zfiter iterAdd(
77 ZF_IN ZFObject *key
78 , ZF_IN ZFObject *value
84 ZF_IN ZFObject *key
85 , ZF_IN_OPT ZFObject *defValue = ZFNull()
87
88public:
92 virtual void addFrom(ZF_IN ZFKeyValueContainer *another) zfpurevirtual;
93
94private:
97 virtual zfiter iterAdd(ZF_IN ZFObject *value) {
99 return zfnull;
100 }
102 virtual zfiter iterAdd(
103 ZF_IN ZFObject *value
104 , ZF_IN_OUT zfiter &it
105 ) {
107 return zfnull;
108 }
110 virtual void addFrom(ZF_IN ZFContainer *another) {
111 if(another != zfnull) {
112 zfself *tmp = zfcast(zfself *, another);
113 if(tmp == zfnull) {
115 return;
116 }
117 this->addFrom(tmp);
118 }
119 }
121
122public:
126 , ZF_IN_OPT zfindex maxCount = zfindexMax()
128 );
131 ZF_IN_OPT zfindex maxCount = zfindexMax()
133 );
134public:
139 , ZFMP_IN_OUT(zfstring &, ret)
140 , ZFMP_IN(zfindex, maxCount)
141 , ZFMP_IN(const ZFTokenForKeyValueContainer &, token)
145 , ZFMP_IN(zfindex, maxCount)
146 , ZFMP_IN(const ZFTokenForKeyValueContainer &, token)
148
149protected:
154 ZF_IN const ZFSerializableData &serializableData
155 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
156 , ZF_OUT_OPT ZFSerializableData *outErrorPos = zfnull
157 );
171 ZF_IN_OUT ZFSerializableData &serializableData
172 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
173 , ZF_IN_OPT ZFSerializable *refOwner = zfnull
174 );
175protected:
180 ZF_IN_OUT ZFSerializableData &serializableData
181 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
182 , ZF_IN_OPT ZFSerializable *refOwner = zfnull
183 );
184
185protected:
188 ZF_IN const zfchar *src
189 , ZF_IN_OPT zfindex srcLen = zfindexMax()
190 , ZF_OUT_OPT zfstring *errorHint = zfnull
191 );
195 , ZF_OUT_OPT zfstring *errorHint = zfnull
196 );
197
198protected:
200 virtual void objectOnDeallocPrepare(void);
201
202public:
204 virtual void objectInfoImpl(ZF_IN_OUT zfstring &ret) {
205 this->objectInfoOfContentT(ret, 5);
206 }
207
209 virtual ZFCompareResult objectCompareValueImpl(ZF_IN ZFObject *anotherObj);
210};
211
213#endif // #ifndef _ZFI_ZFKeyValueContainer_h_
214
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:142
_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(ParamType, paramName)
macro to wrap param types for ZFMETHOD_INLINE_0 series
Definition ZFMethod.h:105
#define ZFMETHOD_DECLARE_2(ReturnType, MethodName, ZFMP_0, ZFMP_1)
see ZFMethod
Definition ZFMethodDeclare.h:1024
#define ZFMETHOD_DECLARE_3(ReturnType, MethodName, ZFMP_0, ZFMP_1, ZFMP_2)
see ZFMethod
Definition ZFMethodDeclare.h:1205
#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 ZFNull()
a global null object
Definition ZFNull.h:20
#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 ZFTokenForContainerDefault()
see ZFTokenForContainer, modifyable, ZFTokenForContainerTrim by default
Definition ZFToken.h:107
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 zfstring objectInfoOfContent(zfindex maxCount=((zfindex) -1), const ZFTokenForContainer &token=_ZFP_ZFTokenForContainerDefault)
see objectInfoOfContentT
virtual ZFCompareResult objectCompareValueImpl(ZFObject *anotherObj)
see objectCompareValue
virtual void objectInfoOfContentT(zfstring &ret, zfindex maxCount=((zfindex) -1), const ZFTokenForContainer &token=_ZFP_ZFTokenForContainerDefault)
return a short string describe the content
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 objectInfoImpl(zfstring &ret)
see objectInfo
Definition ZFKeyValueContainer.h:204
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 zfiter iterAccess(ZFObject *key, ZFObject *defValue=_ZFP_ZFNull)=0
access value, or insert defValue if not exist
virtual zfany iterKey(const zfiter &it)=0
get key value pair with iter, see zfiter
base class of all objects
Definition ZFObjectCore.h:195
ZFSerializable's data container, see ZFSerializable.
Definition ZFSerializableData.h:74
util class to hold string tokens
Definition ZFToken.h:17
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