ezEngine  Release 25.03
ezOpenDdlWriter Class Reference

The base class for OpenDDL writers. More...

#include <OpenDdlWriter.h>

Classes

struct  DdlState
 

Public Types

enum  TypeStringMode { TypeStringMode::Compliant, TypeStringMode::ShortenedUnsignedInt, TypeStringMode::Shortest }
 
enum  FloatPrecisionMode { FloatPrecisionMode::Readable, FloatPrecisionMode::Exact }
 

Public Member Functions

 ezOpenDdlWriter ()
 Constructor.
 
void SetOutputStream (ezStreamWriter *pOutput)
 All output is written to this binary stream.
 
void SetCompactMode (bool bCompact)
 Configures how much whitespace is output.
 
void SetPrimitiveTypeStringMode (TypeStringMode mode)
 Configures how verbose the type strings are going to be written.
 
void SetFloatPrecisionMode (FloatPrecisionMode mode)
 Configures how float values are output.
 
FloatPrecisionMode GetFloatPrecisionMode () const
 Returns how float values are output.
 
void SetIndentation (ezInt8 iIndentation)
 Allows to set the indentation. Negative values are possible. This makes it possible to set the indentation e.g. to -2, thus the output will only have indentation after a level of 3 has been reached.
 
void BeginObject (ezStringView sType, ezStringView sName={}, bool bGlobalName=false, bool bSingleLine=false)
 Begins outputting an object.
 
void EndObject ()
 Ends outputting an object.
 
void BeginPrimitiveList (ezOpenDdlPrimitiveType type, ezStringView sName={}, bool bGlobalName=false)
 Begins outputting a list of primitives of the given type.
 
void EndPrimitiveList ()
 Ends outputting the list of primitives.
 
void WriteBool (const bool *pValues, ezUInt32 uiCount=1)
 Writes a number of values to the primitive list. Can be called multiple times between BeginPrimitiveList() / EndPrimitiveList().
 
void WriteInt8 (const ezInt8 *pValues, ezUInt32 uiCount=1)
 Writes a number of values to the primitive list. Can be called multiple times between BeginPrimitiveList() / EndPrimitiveList().
 
void WriteInt16 (const ezInt16 *pValues, ezUInt32 uiCount=1)
 Writes a number of values to the primitive list. Can be called multiple times between BeginPrimitiveList() / EndPrimitiveList().
 
void WriteInt32 (const ezInt32 *pValues, ezUInt32 uiCount=1)
 Writes a number of values to the primitive list. Can be called multiple times between BeginPrimitiveList() / EndPrimitiveList().
 
void WriteInt64 (const ezInt64 *pValues, ezUInt32 uiCount=1)
 Writes a number of values to the primitive list. Can be called multiple times between BeginPrimitiveList() / EndPrimitiveList().
 
void WriteUInt8 (const ezUInt8 *pValues, ezUInt32 uiCount=1)
 Writes a number of values to the primitive list. Can be called multiple times between BeginPrimitiveList() / EndPrimitiveList().
 
void WriteUInt16 (const ezUInt16 *pValues, ezUInt32 uiCount=1)
 Writes a number of values to the primitive list. Can be called multiple times between BeginPrimitiveList() / EndPrimitiveList().
 
void WriteUInt32 (const ezUInt32 *pValues, ezUInt32 uiCount=1)
 Writes a number of values to the primitive list. Can be called multiple times between BeginPrimitiveList() / EndPrimitiveList().
 
void WriteUInt64 (const ezUInt64 *pValues, ezUInt32 uiCount=1)
 Writes a number of values to the primitive list. Can be called multiple times between BeginPrimitiveList() / EndPrimitiveList().
 
void WriteFloat (const float *pValues, ezUInt32 uiCount=1)
 Writes a number of values to the primitive list. Can be called multiple times between BeginPrimitiveList() / EndPrimitiveList().
 
void WriteDouble (const double *pValues, ezUInt32 uiCount=1)
 Writes a number of values to the primitive list. Can be called multiple times between BeginPrimitiveList() / EndPrimitiveList().
 
void WriteString (const ezStringView &sString)
 Writes a single string to the primitive list. Can be called multiple times between BeginPrimitiveList() / EndPrimitiveList().
 
void WriteBinaryAsString (const void *pData, ezUInt32 uiBytes)
 Writes a single string to the primitive list, but the value is a HEX representation of the given binary data. More...
 

Protected Types

enum  State {
  Invalid = -5, Empty = -4, ObjectSingleLine = -3, ObjectMultiLine = -2,
  ObjectStart = -1, PrimitivesBool = 0, PrimitivesInt8, PrimitivesInt16,
  PrimitivesInt32, PrimitivesInt64, PrimitivesUInt8, PrimitivesUInt16,
  PrimitivesUInt32, PrimitivesUInt64, PrimitivesFloat, PrimitivesDouble,
  PrimitivesString
}
 

Protected Member Functions

EZ_ALWAYS_INLINE void OutputString (ezStringView s)
 
EZ_ALWAYS_INLINE void OutputString (ezStringView s, ezUInt32 uiElementCount)
 
void OutputEscapedString (const ezStringView &string)
 
void OutputIndentation ()
 
void OutputPrimitiveTypeNameCompliant (ezOpenDdlPrimitiveType type)
 
void OutputPrimitiveTypeNameShort (ezOpenDdlPrimitiveType type)
 
void OutputPrimitiveTypeNameShortest (ezOpenDdlPrimitiveType type)
 
void WritePrimitiveType (ezOpenDdlWriter::State exp)
 
void OutputObjectName (ezStringView sName, bool bGlobalName)
 
void WriteBinaryAsHex (const void *pData, ezUInt32 uiBytes)
 
void OutputObjectBeginning ()
 

Protected Attributes

ezInt32 m_iIndentation = 0
 
bool m_bCompactMode = false
 
TypeStringMode m_TypeStringMode = TypeStringMode::ShortenedUnsignedInt
 
FloatPrecisionMode m_FloatPrecisionMode = FloatPrecisionMode::Exact
 
ezStreamWriterm_pOutput = nullptr
 
ezStringBuilder m_sTemp
 
ezHybridArray< DdlState, 16 > m_StateStack
 

Detailed Description

The base class for OpenDDL writers.

Declares a common interface for writing OpenDDL files.

Member Enumeration Documentation

◆ FloatPrecisionMode

Enumerator
Readable 

Float values are printed as readable numbers. Precision might get lost though.

Exact 

Float values are printed as HEX, representing the exact binary data.

◆ TypeStringMode

Enumerator
Compliant 

All primitive types are written as the OpenDDL standard defines them (very verbose)

ShortenedUnsignedInt 

unsigned_intX is shortened to uintX

Shortest 

All primitive type names are shortened to one or two characters: i1, i2, i3, i4, u1, u2, u3, u4, b, s, f, d (int, uint, bool, string, float, double)

Member Function Documentation

◆ OutputObjectName()

void ezOpenDdlWriter::OutputObjectName ( ezStringView  sName,
bool  bGlobalName 
)
protected
Test:
This code path is untested

◆ WriteBinaryAsString()

void ezOpenDdlWriter::WriteBinaryAsString ( const void *  pData,
ezUInt32  uiBytes 
)

Writes a single string to the primitive list, but the value is a HEX representation of the given binary data.

Test:
ezOpenDdlWriter::WriteBinaryAsString

The documentation for this class was generated from the following files: