File BinarySerializer.h

File List > engine > include > BinarySerializer.h

Go to the documentation of this file

#ifndef BINARY_SERIALIZER_H
#define BINARY_SERIALIZER_H
#ifdef __cplusplus
extern "c" {
#endif
#include <stdbool.h>
#include "IntTypes.h"

    enum SerializationContext
    {
        SCTX_ToFile,
        SCTX_ToNetwork,
        SCTX_ToNetworkUpdate
    };

    struct BinarySerializer
    {
        bool bSaving;
        char* pData;
        int pDataSize;
        char* pReadPtr;
        char* pPath;
        enum SerializationContext ctx;

        int toClient; 
    };

    void BS_CreateForLoadFromBuffer(void* buf, int size, struct BinarySerializer* pOutSerializer);
    void BS_CreateForLoad(const char* path, struct BinarySerializer* pOutSerializer);
    void BS_CreateForSave(const char* path, struct BinarySerializer* pOutSerializer);
    void BS_CreateForSaveToNetwork(struct BinarySerializer* pOutSerializer, int client);

    void BS_Finish(struct BinarySerializer* pOutSerializer);


    void BS_SerializeI64(i64 val, struct BinarySerializer* pSerializer);
    void BS_SerializeU64(u64 val, struct BinarySerializer* pSerializer);
    void BS_SerializeI32(i32 val, struct BinarySerializer* pSerializer);
    void BS_SerializeU32(u32 val, struct BinarySerializer* pSerializer);
    void BS_SerializeI16(i16 val, struct BinarySerializer* pSerializer);
    void BS_SerializeU16(u16 val, struct BinarySerializer* pSerializer);
    void BS_SerializeI8(i8 val, struct BinarySerializer* pSerializer);
    void BS_SerializeU8(u8 val, struct BinarySerializer* pSerializer);
    void BS_SerializeBool(bool val, struct BinarySerializer* pSerializer);
    void BS_SerializeFloat(float val, struct BinarySerializer* pSerializer);
    void BS_SerializeDouble(double val, struct BinarySerializer* pSerializer);
    void BS_SerializeString(const char* val, struct BinarySerializer* pSerializer);
    void BS_SerializeBytes(const char* val, u32 len, struct BinarySerializer* pSerializer);
    void BS_SerializeBytesNoLen(const char* val, u32 len, struct BinarySerializer* pSerializer);


    void BS_DeSerializeI64(i64* val, struct BinarySerializer* pSerializer);
    void BS_DeSerializeU64(u64* val, struct BinarySerializer* pSerializer);
    void BS_DeSerializeI32(i32* val, struct BinarySerializer* pSerializer);
    void BS_DeSerializeU32(u32* val, struct BinarySerializer* pSerializer);
    void BS_DeSerializeI16(i16* val, struct BinarySerializer* pSerializer);
    void BS_DeSerializeU16(u16* val, struct BinarySerializer* pSerializer);
    void BS_DeSerializeI8(i8* val, struct BinarySerializer* pSerializer);
    void BS_DeSerializeU8(u8* val, struct BinarySerializer* pSerializer);
    void BS_DeSerializeBool(bool* val, struct BinarySerializer* pSerializer);
    void BS_DeSerializeFloat(float* val, struct BinarySerializer* pSerializer);
    void BS_DeSerializeDouble(double* val, struct BinarySerializer* pSerializer);
    void BS_DeSerializeString(char** val, struct BinarySerializer* pSerializer);
    void BS_DeSerializeStringInto(char* buf, struct BinarySerializer* pSerializer);
    void BS_BytesRead(struct BinarySerializer* pSerializer, u32 numBytes, char* pDst);

#ifdef __cplusplus
}
#endif
#endif