ZFFramework
 
Loading...
Searching...
No Matches
ZFSerializable.h
Go to the documentation of this file.
1
5
6#ifndef _ZFI_ZFSerializable_h_
7#define _ZFI_ZFSerializable_h_
8
9#include "ZFObjectCore.h"
10#include "ZFIOCallback.h"
12
17#define ZFSerializableKeyword_styleKey "styleKey"
18
30#define ZFSerializableKeyword_serializableNewInstanceId serializableNewInstance
34#define ZFSerializableKeyword_serializableNewInstance ZFM_TOSTRING(ZFSerializableKeyword_serializableNewInstanceId)
35
36// ============================================================
58
59#define ZFTOKEN_ZFSerializablePropertyTypeUnspecified "Unspecified"
61#define ZFTOKEN_ZFSerializablePropertyTypeNotSerializable "NotSerializable"
63#define ZFTOKEN_ZFSerializablePropertyTypeSerializable "Serializable"
65#define ZFTOKEN_ZFSerializablePropertyTypeEmbeded "Embeded"
66
67// ============================================================
68zfclassFwd _ZFP_I_ZFSerializablePropertyTypeHolder;
163zfinterface ZFLIB_ZFCore ZFSerializable : zfextend ZFInterface {
164 ZFINTERFACE_DECLARE(ZFSerializable, ZFInterface)
165
166 // ============================================================
167public:
190 ZF_IN const ZFSerializableData &serializableData
191 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
192 , ZF_OUT_OPT ZFSerializableData *outErrorPos = zfnull
193 );
200 ZF_OUT ZFSerializableData &serializableData
201 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
202 , ZF_IN_OPT ZFSerializable *refOwner = zfnull
203 );
204
222 ZF_IN const zfchar *src
223 , ZF_IN_OPT zfindex srcLen = zfindexMax()
224 , ZF_OUT_OPT zfstring *errorHint = zfnull
225 );
229 , ZF_OUT_OPT zfstring *errorHint = zfnull
230 );
231
236 ZF_OUT ZFCoreArray<const ZFProperty *> &notSerializableProperty
237 , ZF_OUT ZFCoreArray<const ZFProperty *> &serializableProperty
238 , ZF_OUT ZFCoreArray<const ZFProperty *> &embededProperty
239 );
244
245private:
246 zffinal _ZFP_I_ZFSerializablePropertyTypeHolder *_ZFP_ZFSerializable_getPropertyTypeHolder(void);
247public:
258
268
269protected:
307
308protected:
313 return zftrue;
314 }
315
328 ZF_IN const ZFSerializableData &serializableData
329 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
330 , ZF_OUT_OPT ZFSerializableData *outErrorPos = zfnull
331 ) {
332 return zftrue;
333 }
334
340 ZF_IN_OUT ZFSerializableData &serializableData
341 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
342 , ZF_IN_OPT ZFSerializable *refOwner = zfnull
343 ) {
344 return zftrue;
345 }
346
370 ZF_IN const ZFSerializableData &propertyData
371 , ZF_IN const ZFProperty *property
372 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
373 , ZF_OUT_OPT ZFSerializableData *outErrorPos = zfnull
374 );
383 ZF_OUT ZFSerializableData &ownerData
384 , ZF_IN const ZFProperty *property
385 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
386 , ZF_IN_OPT ZFSerializable *refOwner = zfnull
387 );
393 ZF_IN const ZFSerializableData &propertyData
394 , ZF_IN const ZFProperty *property
395 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
396 , ZF_OUT_OPT ZFSerializableData *outErrorPos = zfnull
397 );
406 ZF_OUT ZFSerializableData &ownerData
407 , ZF_IN const ZFProperty *property
408 , ZF_IN ZFSerializable *refOwner
409 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
410 );
411
412protected:
415 ZF_IN const zfchar *src
416 , ZF_IN_OPT zfindex srcLen = zfindexMax()
417 , ZF_OUT_OPT zfstring *errorHint = zfnull
418 ) {
419 return zffalse;
420 }
421
424 , ZF_OUT_OPT zfstring *errorHint = zfnull
425 ) {
426 return zffalse;
427 }
428
429public:
435 virtual inline zfstring serializableInfo(void) {
436 zfstring ret;
437 this->serializableInfoT(ret);
438 return ret;
439 }
440};
441
442// ============================================================
449
450// ============================================================
460 ZF_OUT zfauto &result
461 , ZF_IN const ZFSerializableData &serializableData
462 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
463 , ZF_OUT_OPT ZFSerializableData *outErrorPos = zfnull
464 );
467 ZF_IN const ZFSerializableData &serializableData
468 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
469 , ZF_OUT_OPT ZFSerializableData *outErrorPos = zfnull
470 );
473 ZF_OUT ZFSerializableData &serializableData
474 , ZF_IN ZFObject *obj
475 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
476 , ZF_IN_OPT ZFSerializable *refOwner = zfnull
477 );
480 ZF_IN ZFObject *obj
481 , ZF_OUT_OPT zfbool *outSuccess = zfnull
482 , ZF_OUT_OPT zfstring *outErrorHint = zfnull
483 , ZF_IN_OPT ZFSerializable *refOwner = zfnull
484 );
485
486// ============================================================
491 ZF_OUT zfauto &result
492 , ZF_IN const ZFClass *cls
493 , ZF_IN const zfchar *src
494 , ZF_IN_OPT zfindex srcLen = zfindexMax()
495 , ZF_OUT_OPT zfstring *errorHint = zfnull
496 );
499 ZF_IN const ZFClass *cls
500 , ZF_IN const zfchar *src
501 , ZF_IN_OPT zfindex srcLen = zfindexMax()
502 , ZF_OUT_OPT zfstring *errorHint = zfnull
503 ) {
504 zfauto ret;
505 ZFObjectFromStringT(ret, cls, src, srcLen, errorHint);
506 return ret;
507}
508
512 , ZF_IN ZFObject *obj
513 , ZF_OUT_OPT zfstring *errorHint = zfnull
514 );
517 ZF_IN ZFObject *obj
518 , ZF_OUT_OPT zfstring *errorHint = zfnull
519 ) {
520 zfstring ret;
521 ZFObjectToStringT(ret, obj, errorHint);
522 return ret;
523}
524
525// ============================================================
530 ZF_OUT zfauto &result
531 , ZF_IN const ZFClass *cls
532 , ZF_IN const zfchar *src
533 , ZF_IN_OPT zfindex srcLen = zfindexMax()
534 , ZF_OUT_OPT zfstring *errorHint = zfnull
535 );
538 ZF_IN const ZFClass *cls
539 , ZF_IN const zfchar *src
540 , ZF_IN_OPT zfindex srcLen = zfindexMax()
541 , ZF_OUT_OPT zfstring *errorHint = zfnull
542 ) {
543 zfauto ret;
544 ZFObjectFromStringOrDataT(ret, cls, src, srcLen, errorHint);
545 return ret;
546}
547
551 , ZF_IN ZFObject *obj
552 , ZF_OUT_OPT zfstring *errorHint = zfnull
553 );
556 ZF_IN ZFObject *obj
557 , ZF_OUT_OPT zfstring *errorHint = zfnull
558 ) {
559 zfstring ret;
560 ZFObjectToStringOrDataT(ret, obj, errorHint);
561 return ret;
562}
563
565#endif // #ifndef _ZFI_ZFSerializable_h_
566
#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:192
#define zffinal
dummy macro shows that a method or class is designed must not to be overrided
Definition ZFCoreTypeDef_ClassType.h:63
#define zfextend
dummy macro shows class inherit from another
Definition ZFCoreTypeDef_ClassType.h:53
#define ZF_IN
dummy macro that shows the param used as required input
Definition ZFCoreTypeDef_ClassType.h:180
#define ZF_IN_OPT
dummy macro that shows the param used as optional input
Definition ZFCoreTypeDef_ClassType.h:184
#define ZF_OUT
dummy macro that shows the param used as required output
Definition ZFCoreTypeDef_ClassType.h:188
#define ZF_IN_OUT
dummy macro that shows the param used as required input and output
Definition ZFCoreTypeDef_ClassType.h:196
#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 zftrue
bool true type
Definition ZFCoreTypeDef_CoreType.h:107
#define zfindexMax()
(zfindex)-1, indicate a max index value, see zfindex
Definition ZFCoreTypeDef_CoreType.h:159
#define zffalse
bool false type
Definition ZFCoreTypeDef_CoreType.h:111
#define zfnull
same as NULL, defined for future use
Definition ZFCoreTypeDef_CoreType.h:88
zft_zfstring< zfchar > zfstring
see zft_zfstring
Definition ZFCoreTypeDef_StringType.h:15
common callback defines
#define ZF_NAMESPACE_GLOBAL_BEGIN
begin namespace ZFFramework
Definition ZFNamespace.h:97
#define ZF_NAMESPACE_GLOBAL_END
end namespace ZFFramework
Definition ZFNamespace.h:98
base class of all objects
#define zfinterface
shows the type is an interface, see ZFInterface
Definition ZFObjectInterface.h:20
#define ZFINTERFACE_DECLARE(InterfaceName, ParentInterface,...)
see ZFInterface
Definition ZFObjectInterface.h:100
zfauto ZFObjectFromString(const ZFClass *cls, const zfchar *src, zfindex srcLen=((zfindex) -1), zfstring *errorHint=zft_zfnull)
see ZFObjectFromStringT
Definition ZFSerializable.h:498
zfbool ZFObjectToStringOrDataT(zfstring &ret, ZFObject *obj, zfstring *errorHint=zft_zfnull)
see ZFObjectFromStringOrDataT
zfstring ZFObjectToStringOrData(ZFObject *obj, zfstring *errorHint=zft_zfnull)
see ZFObjectFromStringOrDataT
Definition ZFSerializable.h:555
zfbool ZFObjectToStringT(zfstring &ret, ZFObject *obj, zfstring *errorHint=zft_zfnull)
see ZFObjectFromStringT
ZFSerializablePropertyType
serializable property type, see ZFSerializable::serializableOnCheckPropertyType
Definition ZFSerializable.h:40
@ ZFSerializablePropertyTypeSerializable
see ZFSerializable::serializableOnCheckPropertyType
Definition ZFSerializable.h:52
@ ZFSerializablePropertyTypeUnspecified
see ZFSerializable::serializableOnCheckPropertyType
Definition ZFSerializable.h:44
@ ZFSerializablePropertyTypeEmbeded
see ZFSerializable::serializableOnCheckPropertyType
Definition ZFSerializable.h:56
@ ZFSerializablePropertyTypeNotSerializable
see ZFSerializable::serializableOnCheckPropertyType
Definition ZFSerializable.h:48
zfbool ZFObjectToDataT(ZFSerializableData &serializableData, ZFObject *obj, zfstring *outErrorHint=zft_zfnull, ZFSerializable *refOwner=zft_zfnull)
see ZFObjectFromDataT
zfstring ZFObjectToString(ZFObject *obj, zfstring *errorHint=zft_zfnull)
see ZFObjectFromStringT
Definition ZFSerializable.h:516
zfbool ZFObjectFromStringOrDataT(zfauto &result, const ZFClass *cls, const zfchar *src, zfindex srcLen=((zfindex) -1), zfstring *errorHint=zft_zfnull)
convenient method to ZFObjectFromString or ZFObjectFromData
ZFSerializableData ZFObjectToData(ZFObject *obj, zfbool *outSuccess=zft_zfnull, zfstring *outErrorHint=zft_zfnull, ZFSerializable *refOwner=zft_zfnull)
see ZFObjectFromDataT
zfauto ZFObjectFromData(const ZFSerializableData &serializableData, zfstring *outErrorHint=zft_zfnull, ZFSerializableData *outErrorPos=zft_zfnull)
see ZFObjectFromDataT
zfbool ZFObjectFromDataT(zfauto &result, const ZFSerializableData &serializableData, zfstring *outErrorHint=zft_zfnull, ZFSerializableData *outErrorPos=zft_zfnull)
convenient method to ZFSerializable::serializeFromData
zfbool ZFObjectIsSerializable(ZFObject *obj)
true if object is serializable
zfauto ZFObjectFromStringOrData(const ZFClass *cls, const zfchar *src, zfindex srcLen=((zfindex) -1), zfstring *errorHint=zft_zfnull)
see ZFObjectFromStringOrDataT
Definition ZFSerializable.h:537
zfbool ZFObjectFromStringT(zfauto &result, const ZFClass *cls, const zfchar *src, zfindex srcLen=((zfindex) -1), zfstring *errorHint=zft_zfnull)
convenient method to ZFSerializable::serializeFromString
ZFObject's class info.
Definition ZFClass.h:67
light weight array
Definition ZFCoreArray.h:331
base class of all objects
Definition ZFObjectCore.h:209
info for a property for ZFObject, see ZFPROPERTY_RETAIN for more info
Definition ZFProperty.h:28
ZFSerializable's data container, see ZFSerializable.
Definition ZFSerializableData.h:74
base class of call serializable object
Definition ZFSerializable.h:163
zfstring serializablePropertyTypeInfo(void)
return info of serializablePropertyTypeGetAll, for debug use only
void serializableGetAllSerializableEmbededPropertyT(ZFCoreArray< const ZFProperty * > &ret)
see serializableGetAllSerializableEmbededProperty
virtual zfbool serializableOnSerializeFromString(const zfchar *src, zfindex srcLen=((zfindex) -1), zfstring *errorHint=zft_zfnull)
see serializeFromString
Definition ZFSerializable.h:414
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,...
zfbool serializeToString(zfstring &ret, zfstring *errorHint=zft_zfnull)
see serializeFromString
ZFCoreArray< const ZFProperty * > serializableGetAllSerializableEmbededProperty(void)
get all serializable embeded property, usually for debug only, see serializableOnCheckPropertyType
Definition ZFSerializable.h:263
zfbool serializable(void)
true if object is currently serializable, see ZFSerializable
virtual zfstring serializableInfo(void)
see serializableInfoT
Definition ZFSerializable.h:435
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
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,...
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,...
virtual ZFSerializablePropertyType serializableOnCheckPropertyType(const ZFProperty *property)
check the property type that serializable should do what while serializing
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...
Definition ZFSerializable.h:327
virtual zfbool serializableOnSerializeToString(zfstring &ret, zfstring *errorHint=zft_zfnull)
see serializeFromString
Definition ZFSerializable.h:422
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,...
void serializableGetAllSerializablePropertyT(ZFCoreArray< const ZFProperty * > &ret)
see serializableGetAllSerializableProperty
ZFCoreArray< const ZFProperty * > serializableGetAllSerializableProperty(void)
get all serializable property, usually for debug only, see serializableOnCheckPropertyType
Definition ZFSerializable.h:253
virtual zfbool serializableOnSerializeToData(ZFSerializableData &serializableData, zfstring *outErrorHint=zft_zfnull, ZFSerializable *refOwner=zft_zfnull)
corresponding to serializableOnSerializeFromData, return whether the task is success,...
Definition ZFSerializable.h:339
virtual zfbool serializableOnCheck(void)
see serializable
Definition ZFSerializable.h:312
zfbool serializeFromData(const ZFSerializableData &serializableData, zfstring *outErrorHint=zft_zfnull, ZFSerializableData *outErrorPos=zft_zfnull)
serialize from data, see ZFSerializable
zfbool serializeFromString(const zfchar *src, zfindex srcLen=((zfindex) -1), zfstring *errorHint=zft_zfnull)
serialize from string, return false by default
zfbool serializeToData(ZFSerializableData &serializableData, zfstring *outErrorHint=zft_zfnull, ZFSerializable *refOwner=zft_zfnull)
serialize to data, see ZFSerializable
virtual void serializableInfoT(zfstring &ret)
get info as a serializable
a ZFObject holder which would release content object automatically when destroyed
Definition zfautoFwd.h:34