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
166public:
175 ZFEVENT(SerializeFromPrev)
184 ZFEVENT(SerializeFromPost)
193 ZFEVENT(SerializeToPrev)
202 ZFEVENT(SerializeToPost)
203
204 // ============================================================
205public:
228 ZF_IN const ZFSerializableData &serializableData
229 , ZF_OUT_OPT zfstring *errorHint = zfnull
231 );
238 ZF_OUT ZFSerializableData &serializableData
239 , ZF_OUT_OPT zfstring *errorHint = zfnull
240 , ZF_IN_OPT ZFSerializable *refOwner = zfnull
241 );
242
260 ZF_IN const zfchar *src
261 , ZF_IN_OPT zfindex srcLen = zfindexMax()
262 , ZF_OUT_OPT zfstring *errorHint = zfnull
263 );
267 , ZF_OUT_OPT zfstring *errorHint = zfnull
268 );
269
274 ZF_OUT ZFCoreArray<const ZFProperty *> &notSerializableProperty
275 , ZF_OUT ZFCoreArray<const ZFProperty *> &serializableProperty
276 , ZF_OUT ZFCoreArray<const ZFProperty *> &embededProperty
277 );
282
283private:
284 zffinal _ZFP_I_ZFSerializablePropertyTypeHolder *_ZFP_ZFSerializable_getPropertyTypeHolder(void);
285public:
296
306
307protected:
345
346protected:
351 return zftrue;
352 }
353
366 ZF_IN const ZFSerializableData &serializableData
367 , ZF_OUT_OPT zfstring *errorHint = zfnull
369 ) {
370 return zftrue;
371 }
372
378 ZF_IN_OUT ZFSerializableData &serializableData
379 , ZF_OUT_OPT zfstring *errorHint = zfnull
380 , ZF_IN_OPT ZFSerializable *refOwner = zfnull
381 ) {
382 return zftrue;
383 }
384
408 ZF_IN const ZFSerializableData &propertyData
409 , ZF_IN const ZFProperty *property
410 , ZF_OUT_OPT zfstring *errorHint = zfnull
412 );
421 ZF_OUT ZFSerializableData &ownerData
422 , ZF_IN const ZFProperty *property
423 , ZF_OUT_OPT zfstring *errorHint = zfnull
424 , ZF_IN_OPT ZFSerializable *refOwner = zfnull
425 );
431 ZF_IN const ZFSerializableData &propertyData
432 , ZF_IN const ZFProperty *property
433 , ZF_OUT_OPT zfstring *errorHint = zfnull
435 );
444 ZF_OUT ZFSerializableData &ownerData
445 , ZF_IN const ZFProperty *property
446 , ZF_IN ZFSerializable *refOwner
447 , ZF_OUT_OPT zfstring *errorHint = zfnull
448 );
449
450protected:
453 ZF_IN const zfchar *src
454 , ZF_IN_OPT zfindex srcLen = zfindexMax()
455 , ZF_OUT_OPT zfstring *errorHint = zfnull
456 ) {
457 return zffalse;
458 }
459
462 , ZF_OUT_OPT zfstring *errorHint = zfnull
463 ) {
464 return zffalse;
465 }
466
467public:
473 virtual inline zfstring serializableInfo(void) {
474 zfstring ret;
475 this->serializableInfoT(ret);
476 return ret;
477 }
478};
479
480// ============================================================
487
488// ============================================================
498 ZF_OUT zfauto &result
499 , ZF_IN const ZFSerializableData &serializableData
500 , ZF_OUT_OPT zfstring *errorHint = zfnull
502 );
505 ZF_IN const ZFSerializableData &serializableData
506 , ZF_OUT_OPT zfstring *errorHint = zfnull
508 );
511 ZF_OUT ZFSerializableData &serializableData
512 , ZF_IN ZFObject *obj
513 , ZF_OUT_OPT zfstring *errorHint = zfnull
514 , ZF_IN_OPT ZFSerializable *refOwner = zfnull
515 );
518 ZF_IN ZFObject *obj
519 , ZF_OUT_OPT zfbool *outSuccess = zfnull
520 , ZF_OUT_OPT zfstring *errorHint = zfnull
521 , ZF_IN_OPT ZFSerializable *refOwner = zfnull
522 );
523
524// ============================================================
529 ZF_OUT zfauto &result
530 , ZF_IN const ZFClass *cls
531 , ZF_IN const zfchar *src
532 , ZF_IN_OPT zfindex srcLen = zfindexMax()
533 , ZF_OUT_OPT zfstring *errorHint = zfnull
534 );
537 ZF_IN const ZFClass *cls
538 , ZF_IN const zfchar *src
539 , ZF_IN_OPT zfindex srcLen = zfindexMax()
540 , ZF_OUT_OPT zfstring *errorHint = zfnull
541 ) {
542 zfauto ret;
543 ZFObjectFromStringT(ret, cls, src, srcLen, errorHint);
544 return ret;
545}
546
550 , ZF_IN ZFObject *obj
551 , ZF_OUT_OPT zfstring *errorHint = zfnull
552 );
555 ZF_IN ZFObject *obj
556 , ZF_OUT_OPT zfstring *errorHint = zfnull
557 ) {
558 zfstring ret;
559 ZFObjectToStringT(ret, obj, errorHint);
560 return ret;
561}
562
563// ============================================================
568 ZF_OUT zfauto &result
569 , ZF_IN const ZFClass *cls
570 , ZF_IN const zfchar *src
571 , ZF_IN_OPT zfindex srcLen = zfindexMax()
572 , ZF_OUT_OPT zfstring *errorHint = zfnull
573 );
576 ZF_IN const ZFClass *cls
577 , ZF_IN const zfchar *src
578 , ZF_IN_OPT zfindex srcLen = zfindexMax()
579 , ZF_OUT_OPT zfstring *errorHint = zfnull
580 ) {
581 zfauto ret;
582 ZFObjectFromStringOrDataT(ret, cls, src, srcLen, errorHint);
583 return ret;
584}
585
589 , ZF_IN ZFObject *obj
590 , ZF_OUT_OPT zfstring *errorHint = zfnull
591 );
594 ZF_IN ZFObject *obj
595 , ZF_OUT_OPT zfstring *errorHint = zfnull
596 ) {
597 zfstring ret;
598 ZFObjectToStringOrDataT(ret, obj, errorHint);
599 return ret;
600}
601
603#endif // #ifndef _ZFI_ZFSerializable_h_
604
#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:210
#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:198
#define ZF_IN_OPT
dummy macro that shows the param used as optional input
Definition ZFCoreTypeDef_ClassType.h:202
#define ZF_OUT
dummy macro that shows the param used as required output
Definition ZFCoreTypeDef_ClassType.h:206
#define ZF_IN_OUT
dummy macro that shows the param used as required input and output
Definition ZFCoreTypeDef_ClassType.h:214
#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:99
#define ZFEVENT(YourEvent)
see ZFObject::observerNotify
Definition ZFObjectObserver.h:324
zfauto ZFObjectFromString(const ZFClass *cls, const zfchar *src, zfindex srcLen=((zfindex) -1), zfstring *errorHint=zft_zfnull)
see ZFObjectFromStringT
Definition ZFSerializable.h:536
ZFSerializableData ZFObjectToData(ZFObject *obj, zfbool *outSuccess=zft_zfnull, zfstring *errorHint=zft_zfnull, ZFSerializable *refOwner=zft_zfnull)
see ZFObjectFromDataT
zfbool ZFObjectToDataT(ZFSerializableData &serializableData, ZFObject *obj, zfstring *errorHint=zft_zfnull, ZFSerializable *refOwner=zft_zfnull)
see ZFObjectFromDataT
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:593
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
zfstring ZFObjectToString(ZFObject *obj, zfstring *errorHint=zft_zfnull)
see ZFObjectFromStringT
Definition ZFSerializable.h:554
zfbool ZFObjectFromStringOrDataT(zfauto &result, const ZFClass *cls, const zfchar *src, zfindex srcLen=((zfindex) -1), zfstring *errorHint=zft_zfnull)
convenient method to ZFObjectFromString or ZFObjectFromData
zfbool ZFObjectFromDataT(zfauto &result, const ZFSerializableData &serializableData, zfstring *errorHint=zft_zfnull, ZFSerializableData *errorPos=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:575
zfbool ZFObjectFromStringT(zfauto &result, const ZFClass *cls, const zfchar *src, zfindex srcLen=((zfindex) -1), zfstring *errorHint=zft_zfnull)
convenient method to ZFSerializable::serializeFromString
zfauto ZFObjectFromData(const ZFSerializableData &serializableData, zfstring *errorHint=zft_zfnull, ZFSerializableData *errorPos=zft_zfnull)
see ZFObjectFromDataT
ZFObject's class info.
Definition ZFClass.h:63
light weight array
Definition ZFCoreArray.h:297
base class of all objects
Definition ZFObjectCore.h:195
info for a property for ZFObject, see ZFPROPERTY_RETAIN for more info
Definition ZFProperty.h:27
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:452
virtual zfbool serializableOnSerializeEmbededPropertyToData(ZFSerializableData &ownerData, const ZFProperty *property, ZFSerializable *refOwner, zfstring *errorHint=zft_zfnull)
see serializableOnCheckPropertyType, usually you have no need to override this method,...
zfbool serializeToString(zfstring &ret, zfstring *errorHint=zft_zfnull)
see serializeFromString
zfbool serializeToData(ZFSerializableData &serializableData, zfstring *errorHint=zft_zfnull, ZFSerializable *refOwner=zft_zfnull)
serialize to data, see ZFSerializable
ZFCoreArray< const ZFProperty * > serializableGetAllSerializableEmbededProperty(void)
get all serializable embeded property, usually for debug only, see serializableOnCheckPropertyType
Definition ZFSerializable.h:301
zfbool serializable(void)
true if object is currently serializable, see ZFSerializable
virtual zfstring serializableInfo(void)
see serializableInfoT
Definition ZFSerializable.h:473
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 *errorHint=zft_zfnull, ZFSerializableData *errorPos=zft_zfnull)
see serializableOnCheckPropertyType, usually you have no need to override this method,...
virtual zfbool serializableOnSerializeToData(ZFSerializableData &serializableData, zfstring *errorHint=zft_zfnull, ZFSerializable *refOwner=zft_zfnull)
corresponding to serializableOnSerializeFromData, return whether the task is success,...
Definition ZFSerializable.h:377
virtual ZFSerializablePropertyType serializableOnCheckPropertyType(const ZFProperty *property)
check the property type that serializable should do what while serializing
virtual zfbool serializableOnSerializeToString(zfstring &ret, zfstring *errorHint=zft_zfnull)
see serializeFromString
Definition ZFSerializable.h:460
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:291
virtual zfbool serializableOnSerializePropertyToData(ZFSerializableData &ownerData, const ZFProperty *property, zfstring *errorHint=zft_zfnull, ZFSerializable *refOwner=zft_zfnull)
see serializableOnCheckPropertyType, usually you have no need to override this method,...
virtual zfbool serializableOnSerializeEmbededPropertyFromData(const ZFSerializableData &propertyData, const ZFProperty *property, zfstring *errorHint=zft_zfnull, ZFSerializableData *errorPos=zft_zfnull)
see serializableOnCheckPropertyType, usually you have no need to override this method,...
virtual zfbool serializableOnCheck(void)
see serializable
Definition ZFSerializable.h:350
zfbool serializeFromData(const ZFSerializableData &serializableData, zfstring *errorHint=zft_zfnull, ZFSerializableData *errorPos=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
virtual zfbool serializableOnSerializeFromData(const ZFSerializableData &serializableData, zfstring *errorHint=zft_zfnull, ZFSerializableData *errorPos=zft_zfnull)
for serializable data that has "category" attribute, ZFSerializable would ignore it and leave it to s...
Definition ZFSerializable.h:365
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