99 lines
3.7 KiB
C++
99 lines
3.7 KiB
C++
#pragma once
|
|
|
|
#include "dtcore/inc/dtstream.h"
|
|
|
|
namespace dt
|
|
{
|
|
|
|
class StreamTextOutput : public Stream
|
|
{
|
|
enum {LEVEL_INDENT = 4};
|
|
|
|
public:
|
|
DT_CORE_DLL_ENTRY StreamTextOutput(String& target);
|
|
|
|
DT_CORE_DLL_ENTRY virtual void SerializeBinary(const ByteBuffer& data) override;
|
|
DT_CORE_DLL_ENTRY virtual bool SerializeBinary(ByteBuffer& data) override;
|
|
|
|
DT_CORE_DLL_ENTRY virtual void SerializeString(const String& data) override;
|
|
DT_CORE_DLL_ENTRY virtual bool SerializeString(String& data) override;
|
|
|
|
DT_CORE_DLL_ENTRY virtual void SerializeNumeral(const S8& data) override;
|
|
DT_CORE_DLL_ENTRY virtual bool SerializeNumeral(S8& data) override;
|
|
|
|
DT_CORE_DLL_ENTRY virtual void SerializeNumeral(const S16& data) override;
|
|
DT_CORE_DLL_ENTRY virtual bool SerializeNumeral(S16& data) override;
|
|
|
|
DT_CORE_DLL_ENTRY virtual void SerializeNumeral(const S32& data) override;
|
|
DT_CORE_DLL_ENTRY virtual bool SerializeNumeral(S32& data) override;
|
|
|
|
DT_CORE_DLL_ENTRY virtual void SerializeNumeral(const S64& data) override;
|
|
DT_CORE_DLL_ENTRY virtual bool SerializeNumeral(S64& data) override;
|
|
|
|
DT_CORE_DLL_ENTRY virtual void SerializeNumeral(const U8& data) override;
|
|
DT_CORE_DLL_ENTRY virtual bool SerializeNumeral(U8& data) override;
|
|
|
|
DT_CORE_DLL_ENTRY virtual void SerializeNumeral(const U16& data) override;
|
|
DT_CORE_DLL_ENTRY virtual bool SerializeNumeral(U16& data) override;
|
|
|
|
DT_CORE_DLL_ENTRY virtual void SerializeNumeral(const U32& data) override;
|
|
DT_CORE_DLL_ENTRY virtual bool SerializeNumeral(U32& data) override;
|
|
|
|
DT_CORE_DLL_ENTRY virtual void SerializeNumeral(const U64& data) override;
|
|
DT_CORE_DLL_ENTRY virtual bool SerializeNumeral(U64& data) override;
|
|
|
|
DT_CORE_DLL_ENTRY virtual void SerializeNumeral(const float& data) override;
|
|
DT_CORE_DLL_ENTRY virtual bool SerializeNumeral(float& data) override;
|
|
|
|
DT_CORE_DLL_ENTRY virtual void SerializeNumeral(const double& data) override;
|
|
DT_CORE_DLL_ENTRY virtual bool SerializeNumeral(double& data) override;
|
|
|
|
DT_CORE_DLL_ENTRY virtual void SerializeBool(const bool& data) override;
|
|
DT_CORE_DLL_ENTRY virtual bool SerializeBool(bool& data) override;
|
|
|
|
DT_CORE_DLL_ENTRY virtual void SerializeSize(const SizeT& data) override;
|
|
DT_CORE_DLL_ENTRY virtual bool SerializeSize(SizeT& data) override;
|
|
|
|
DT_CORE_DLL_ENTRY virtual bool SerializeMember(const char* name) override;
|
|
|
|
DT_CORE_DLL_ENTRY virtual void SerializeKey(const String& name) override;
|
|
DT_CORE_DLL_ENTRY virtual bool SerializeKey(String& name) override;
|
|
|
|
DT_CORE_DLL_ENTRY virtual void SerializeVersion(U8& data) override;
|
|
|
|
DT_CORE_DLL_ENTRY virtual void ObjectStart(const void* pointer) override;
|
|
DT_CORE_DLL_ENTRY virtual void ObjectEnd(const void* pointer) override;
|
|
|
|
DT_CORE_DLL_ENTRY virtual void ListStart(const void* pointer) override;
|
|
DT_CORE_DLL_ENTRY virtual void ListEnd(const void* pointer) override;
|
|
|
|
DT_CORE_DLL_ENTRY virtual bool IsInput() const override;
|
|
|
|
private:
|
|
struct Scope
|
|
{
|
|
Scope(const void* pointer)
|
|
:m_Pointer(pointer)
|
|
,m_MemberCount(0)
|
|
,m_DataCount(0)
|
|
,m_Tuple(false)
|
|
{
|
|
|
|
}
|
|
const void* m_Pointer;
|
|
int m_MemberCount;
|
|
int m_DataCount;
|
|
bool m_Tuple;
|
|
};
|
|
Vector<Scope> m_Scopes;
|
|
String& m_Target;
|
|
|
|
void Indent();
|
|
void IndentForData();
|
|
|
|
// no copy
|
|
StreamTextOutput(StreamTextOutput&);
|
|
StreamTextOutput& operator=(StreamTextOutput&);
|
|
};
|
|
|
|
}
|