Plasma Engine  2.0
Loading...
Searching...
No Matches
DdlSerializer.h
1#pragma once
2
4
5#include <Foundation/Basics.h>
6#include <Foundation/IO/OpenDdlWriter.h>
7#include <Foundation/IO/Stream.h>
8#include <Foundation/Serialization/AbstractObjectGraph.h>
9#include <Foundation/Types/UniquePtr.h>
10
12
13struct PL_FOUNDATION_DLL plSerializedBlock
14{
15 plString m_Name;
17};
18
19class PL_FOUNDATION_DLL plAbstractGraphDdlSerializer
20{
21public:
22 static void Write(plStreamWriter& inout_stream, const plAbstractObjectGraph* pGraph, const plAbstractObjectGraph* pTypesGraph = nullptr, bool bCompactMmode = true, plOpenDdlWriter::TypeStringMode typeMode = plOpenDdlWriter::TypeStringMode::Shortest);
23 static plResult Read(plStreamReader& inout_stream, plAbstractObjectGraph* pGraph, plAbstractObjectGraph* pTypesGraph = nullptr, bool bApplyPatches = true);
24
25 static void Write(plOpenDdlWriter& inout_stream, const plAbstractObjectGraph* pGraph, const plAbstractObjectGraph* pTypesGraph = nullptr);
26 static plResult Read(const plOpenDdlReaderElement* pRootElement, plAbstractObjectGraph* pGraph, plAbstractObjectGraph* pTypesGraph = nullptr, bool bApplyPatches = true);
27
28 static void WriteDocument(plStreamWriter& inout_stream, const plAbstractObjectGraph* pHeader, const plAbstractObjectGraph* pGraph, const plAbstractObjectGraph* pTypes, bool bCompactMode = true, plOpenDdlWriter::TypeStringMode typeMode = plOpenDdlWriter::TypeStringMode::Shortest);
29 static plResult ReadDocument(plStreamReader& inout_stream, plUniquePtr<plAbstractObjectGraph>& ref_pHeader, plUniquePtr<plAbstractObjectGraph>& ref_pGraph, plUniquePtr<plAbstractObjectGraph>& ref_pTypes, bool bApplyPatches = true);
30
31 static plResult ReadHeader(plStreamReader& inout_stream, plAbstractObjectGraph* pGraph);
32
33private:
34 static plResult ReadBlocks(plStreamReader& stream, plHybridArray<plSerializedBlock, 3>& blocks);
35};
Definition DdlSerializer.h:20
Definition AbstractObjectGraph.h:115
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
Represents a single 'object' in a DDL document, e.g. either a custom type or a primitives list.
Definition OpenDdlReader.h:11
The base class for OpenDDL writers.
Definition OpenDdlWriter.h:13
TypeStringMode
Definition OpenDdlWriter.h:16
Interface for binary in (read) streams.
Definition Stream.h:22
Interface for binary out (write) streams.
Definition Stream.h:107
A Unique ptr manages an object and destroys that object when it goes out of scope....
Definition UniquePtr.h:10
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54
Definition DdlSerializer.h:14