Files
handleaiuinew/env/LMI/include/GoSdk/Internal/GoSerializer.x.h
T
2024-05-18 23:53:26 +08:00

47 lines
1.9 KiB
C

/**
* @file GoSerializer.x.h
*
* @internal
* Copyright (C) 2016-2021 by LMI Technologies Inc.
* Licensed under the MIT License.
* Redistributed files must retain the above copyright notice.
*/
#ifndef GO_SDK_SERIALIZER_X_H
#define GO_SDK_SERIALIZER_X_H
#include <kApi/Data/kMap.h>
typedef struct GoSerializerTypeInfo
{
kType type; //type object
kTypeVersion version; //type object serialization version information
k16u id; //numeric guid
} GoSerializerTypeInfo;
kDeclareValueEx(Go, GoSerializerTypeInfo, kValue)
typedef struct GoSerializerClass
{
kSerializerClass base;
kMap typeToInfo; //used by writer; maps type pointer to type version info (kMap<kType, GoSerializerTypeInfo>)
kMap idToType; //used by reader; maps type id to type version info (kMap<k16u, GoSerializerTypeInfo>)
} GoSerializerClass;
kDeclareClassEx(Go, GoSerializer, kSerializer)
GoFx(kStatus) GoSerializer_VInit(GoSerializer serializer, kType type, kStream stream, kAlloc allocator);
GoFx(kStatus) GoSerializer_VRelease(GoSerializer serializer);
GoFx(kStatus) GoSerializer_VWriteObject(GoSerializer serializer, kObject object);
GoFx(kStatus) GoSerializer_VReadObject(GoSerializer serializer, kObject* object, kAlloc allocator);
GoFx(kStatus) GoSerializer_ReadObjectItem(GoSerializer serializer, kBool* isLast, kObject* item, kAlloc allocator);
GoFx(kStatus) GoSerializer_WriteTypeId(GoSerializer serializer, kType type, kBool isLast, kSerializerObjectSerializeFx* fx);
GoFx(kStatus) GoSerializer_ReadTypeId(GoSerializer serializer, kType* type, kBool* isLast, kSerializerObjectDeserializeFx* fx);
GoFx(kStatus) GoSerializer_ConstructItem(GoSerializer serializer, kObject* item, kType type, kSerializerObjectDeserializeFx initializer, kAlloc alloc);
GoFx(kStatus) GoSerializer_BuildIdToTypeMap(GoSerializer serializer);
#endif