![]() |
Plasma Engine
2.0
|
Implements a standard compliant JSON writer, all numbers are output as double values. More...
#include <JSONWriter.h>
Classes | |
struct | CommaWriter |
struct | JSONState |
Public Member Functions | |
plStandardJSONWriter () | |
Constructor. | |
~plStandardJSONWriter () | |
Destructor. | |
void | SetOutputStream (plStreamWriter *pOutput) |
All output is written to this binary stream. | |
virtual void | WriteBool (bool value) override |
Writes a bool to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray(). | |
virtual void | WriteInt32 (plInt32 value) override |
Writes an int32 to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray(). | |
virtual void | WriteUInt32 (plUInt32 value) override |
Writes a uint32 to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray(). | |
virtual void | WriteInt64 (plInt64 value) override |
Writes an int64 to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray(). | |
virtual void | WriteUInt64 (plUInt64 value) override |
Writes a uint64 to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray(). | |
virtual void | WriteFloat (float value) override |
Writes a float to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray(). | |
virtual void | WriteDouble (double value) override |
Writes a double to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray(). | |
virtual void | WriteString (plStringView value) override |
Writes a string to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray(). | |
virtual void | WriteNULL () override |
Writes the value 'null' to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray(). | |
virtual void | WriteTime (plTime value) override |
Writes the time value as a double (i.e. redirects to WriteDouble()). | |
virtual void | WriteColor (const plColor &value) override |
Outputs the value via WriteVec4(). | |
virtual void | WriteColorGamma (const plColorGammaUB &value) override |
Outputs the value via WriteVec4(). | |
virtual void | WriteVec2 (const plVec2 &value) override |
Outputs the value via WriteBinaryData(). | |
virtual void | WriteVec3 (const plVec3 &value) override |
Outputs the value via WriteBinaryData(). | |
virtual void | WriteVec4 (const plVec4 &value) override |
Outputs the value via WriteBinaryData(). | |
virtual void | WriteVec2I32 (const plVec2I32 &value) override |
Outputs the value via WriteBinaryData(). | |
virtual void | WriteVec3I32 (const plVec3I32 &value) override |
Outputs the value via WriteBinaryData(). | |
virtual void | WriteVec4I32 (const plVec4I32 &value) override |
Outputs the value via WriteBinaryData(). | |
virtual void | WriteQuat (const plQuat &value) override |
Outputs the value via WriteBinaryData(). | |
virtual void | WriteMat3 (const plMat3 &value) override |
Outputs the value via WriteBinaryData(). | |
virtual void | WriteMat4 (const plMat4 &value) override |
Outputs the value via WriteBinaryData(). | |
virtual void | WriteUuid (const plUuid &value) override |
Outputs the value via WriteBinaryData(). | |
virtual void | WriteAngle (plAngle value) override |
Writes a float to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray(). | |
virtual void | WriteDataBuffer (const plDataBuffer &value) override |
Outputs the value via WriteBinaryData(). | |
virtual void | WriteBinaryData (plStringView sDataType, const void *pData, plUInt32 uiBytes, plStringView sValueString=nullptr) override |
Implements the MongoDB way of writing binary data. First writes a "$type" variable, then a "$binary" variable that represents the raw data (Hex encoded, little endian). | |
virtual void | BeginVariable (plStringView sName) override |
Begins outputting a variable. szName is the variable name. | |
virtual void | EndVariable () override |
Ends outputting a variable. | |
virtual void | BeginArray (plStringView sName={}) override |
Begins outputting an array variable. | |
virtual void | EndArray () override |
Ends outputting an array variable. | |
virtual void | BeginObject (plStringView sName={}) override |
Begins outputting an object variable. | |
virtual void | EndObject () override |
Ends outputting an object variable. | |
![]() | |
plJSONWriter () | |
Constructor. | |
virtual | ~plJSONWriter () |
Destructor. | |
void | SetWhitespaceMode (WhitespaceMode whitespaceMode) |
Configures how much whitespace is output. | |
void | SetArrayMode (ArrayMode arrayMode) |
Configures how arrays are written. | |
void | AddVariableBool (plStringView sName, bool value) |
Shorthand for "BeginVariable(szName); WriteBool(value); EndVariable(); ". | |
void | AddVariableInt32 (plStringView sName, plInt32 value) |
Shorthand for "BeginVariable(szName); WriteInt32(value); EndVariable(); ". | |
void | AddVariableUInt32 (plStringView sName, plUInt32 value) |
Shorthand for "BeginVariable(szName); WriteUInt32(value); EndVariable(); ". | |
void | AddVariableInt64 (plStringView sName, plInt64 value) |
Shorthand for "BeginVariable(szName); WriteInt64(value); EndVariable(); ". | |
void | AddVariableUInt64 (plStringView sName, plUInt64 value) |
Shorthand for "BeginVariable(szName); WriteUInt64(value); EndVariable(); ". | |
void | AddVariableFloat (plStringView sName, float value) |
Shorthand for "BeginVariable(szName); WriteFloat(value); EndVariable(); ". | |
void | AddVariableDouble (plStringView sName, double value) |
Shorthand for "BeginVariable(szName); WriteDouble(value); EndVariable(); ". | |
void | AddVariableString (plStringView sName, plStringView value) |
Shorthand for "BeginVariable(szName); WriteString(value); EndVariable(); ". | |
void | AddVariableNULL (plStringView sName) |
Shorthand for "BeginVariable(szName); WriteNULL(value); EndVariable(); ". | |
void | AddVariableTime (plStringView sName, plTime value) |
Shorthand for "BeginVariable(szName); WriteTime(value); EndVariable(); ". | |
void | AddVariableUuid (plStringView sName, plUuid value) |
Shorthand for "BeginVariable(szName); WriteUuid(value); EndVariable(); ". | |
void | AddVariableAngle (plStringView sName, plAngle value) |
Shorthand for "BeginVariable(szName); WriteAngle(value); EndVariable(); ". | |
void | AddVariableColor (plStringView sName, const plColor &value) |
Shorthand for "BeginVariable(szName); WriteColor(value); EndVariable(); ". | |
void | AddVariableColorGamma (plStringView sName, const plColorGammaUB &value) |
Shorthand for "BeginVariable(szName); WriteColorGamma(value); EndVariable(); ". | |
void | AddVariableVec2 (plStringView sName, const plVec2 &value) |
Shorthand for "BeginVariable(szName); WriteVec2(value); EndVariable(); ". | |
void | AddVariableVec3 (plStringView sName, const plVec3 &value) |
Shorthand for "BeginVariable(szName); WriteVec3(value); EndVariable(); ". | |
void | AddVariableVec4 (plStringView sName, const plVec4 &value) |
Shorthand for "BeginVariable(szName); WriteVec4(value); EndVariable(); ". | |
void | AddVariableVec2I32 (plStringView sName, const plVec2I32 &value) |
Shorthand for "BeginVariable(szName); WriteVec2I32(value); EndVariable(); ". | |
void | AddVariableVec3I32 (plStringView sName, const plVec3I32 &value) |
Shorthand for "BeginVariable(szName); WriteVec3I32(value); EndVariable(); ". | |
void | AddVariableVec4I32 (plStringView sName, const plVec4I32 &value) |
Shorthand for "BeginVariable(szName); WriteVec4I32(value); EndVariable(); ". | |
void | AddVariableQuat (plStringView sName, const plQuat &value) |
Shorthand for "BeginVariable(szName); WriteQuat(value); EndVariable(); ". | |
void | AddVariableMat3 (plStringView sName, const plMat3 &value) |
Shorthand for "BeginVariable(szName); WriteMat3(value); EndVariable(); ". | |
void | AddVariableMat4 (plStringView sName, const plMat4 &value) |
Shorthand for "BeginVariable(szName); WriteMat4(value); EndVariable(); ". | |
void | AddVariableDataBuffer (plStringView sName, const plDataBuffer &value) |
Shorthand for "BeginVariable(szName); WriteDataBuffer(value); EndVariable(); ". | |
void | AddVariableVariant (plStringView sName, const plVariant &value) |
Shorthand for "BeginVariable(szName); WriteVariant(value); EndVariable(); ". | |
virtual void | WriteVariant (const plVariant &value) |
The default implementation dispatches all supported types to WriteBool, WriteInt32, etc. and asserts on the more complex types. | |
bool | HadWriteError () const |
Indicates if an error was encountered while writing. | |
Protected Types | |
enum | State { Invalid , Empty , Variable , Object , NamedObject , Array , NamedArray } |
Protected Member Functions | |
void | End () |
void | OutputString (plStringView s) |
void | OutputEscapedString (plStringView s) |
void | OutputIndentation () |
![]() | |
void | SetWriteErrorState () |
called internally when there was an error during writing | |
Protected Attributes | |
plInt32 | m_iIndentation |
plStreamWriter * | m_pOutput |
plHybridArray< JSONState, 16 > | m_StateStack |
![]() | |
WhitespaceMode | m_WhitespaceMode = WhitespaceMode::All |
ArrayMode | m_ArrayMode = ArrayMode::InOneLine |
Additional Inherited Members | |
![]() | |
enum class | WhitespaceMode { All , LessIndentation , NoIndentation , NewlinesOnly , None } |
Modes to configure how much whitespace the JSON writer will output. More... | |
enum class | ArrayMode { InOneLine , OneLinePerItem } |
Modes to configure how arrays are written. More... | |
Implements a standard compliant JSON writer, all numbers are output as double values.
plStandardJSONWriter also implements WriteBinaryData() and the functions WriteVec2() etc., for which there is no standard way to implement them in JSON. WriteVec2() etc. will simply redirect to WriteBinaryData(), which in turn implements the MongoDB convention of outputting binary data. I.e. it will turn the data into a JSON object which contains one variable called "$type" that identifies the data type, and one variable called "$binary" which contains the raw binary data Hex encoded in little endian format. If you want to write a fully standard compliant JSON file, just don't output any of these types.
|
overridevirtual |
Begins outputting an array variable.
If szName is nullptr this will create an anonymous array, which is necessary when you want to put an array as a value into another array. BeginArray() with a non-nullptr value for szName is identical to calling BeginVariable() first. In this case EndArray() will also end the variable definition, so no additional call to EndVariable() is required.
Implements plJSONWriter.
|
overridevirtual |
Begins outputting an object variable.
If szName is nullptr this will create an anonymous object, which is necessary when you want to put an object as a value into an array. BeginObject() with a non-nullptr value for szName is identical to calling BeginVariable() first. In this case EndObject() will also end the variable definition, so no additional call to EndVariable() is required.
Implements plJSONWriter.
|
overridevirtual |
Begins outputting a variable. szName is the variable name.
Between BeginVariable() and EndVariable() you can call the WriteXYZ functions once to write out the variable's data. You can also call BeginArray() and BeginObject() without a variable name to output an array or object variable.
Implements plJSONWriter.
|
overridevirtual |
Ends outputting an array variable.
Implements plJSONWriter.
|
overridevirtual |
Ends outputting an object variable.
Implements plJSONWriter.
|
overridevirtual |
Ends outputting a variable.
Implements plJSONWriter.
|
overridevirtual |
Writes a float to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray().
Implements plJSONWriter.
|
overridevirtual |
Implements the MongoDB way of writing binary data. First writes a "$type" variable, then a "$binary" variable that represents the raw data (Hex encoded, little endian).
Implements plJSONWriter.
|
overridevirtual |
Writes a bool to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray().
Implements plJSONWriter.
|
overridevirtual |
Outputs the value via WriteVec4().
Implements plJSONWriter.
|
overridevirtual |
Outputs the value via WriteVec4().
Implements plJSONWriter.
|
overridevirtual |
Outputs the value via WriteBinaryData().
Implements plJSONWriter.
|
overridevirtual |
Writes a double to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray().
Implements plJSONWriter.
|
overridevirtual |
Writes a float to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray().
Implements plJSONWriter.
|
overridevirtual |
Writes an int32 to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray().
Implements plJSONWriter.
|
overridevirtual |
Writes an int64 to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray().
Implements plJSONWriter.
|
overridevirtual |
Outputs the value via WriteBinaryData().
Implements plJSONWriter.
|
overridevirtual |
Outputs the value via WriteBinaryData().
Implements plJSONWriter.
|
overridevirtual |
Writes the value 'null' to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray().
Implements plJSONWriter.
|
overridevirtual |
Outputs the value via WriteBinaryData().
Implements plJSONWriter.
|
overridevirtual |
Writes a string to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray().
Implements plJSONWriter.
|
overridevirtual |
Writes the time value as a double (i.e. redirects to WriteDouble()).
Implements plJSONWriter.
|
overridevirtual |
Writes a uint32 to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray().
Implements plJSONWriter.
|
overridevirtual |
Writes a uint64 to the JSON file. Can only be called between BeginVariable() / EndVariable() or BeginArray() / EndArray().
Implements plJSONWriter.
|
overridevirtual |
Outputs the value via WriteBinaryData().
Implements plJSONWriter.
|
overridevirtual |
Outputs the value via WriteBinaryData().
Implements plJSONWriter.
|
overridevirtual |
Outputs the value via WriteBinaryData().
Implements plJSONWriter.
|
overridevirtual |
Outputs the value via WriteBinaryData().
Implements plJSONWriter.
|
overridevirtual |
Outputs the value via WriteBinaryData().
Implements plJSONWriter.
|
overridevirtual |
Outputs the value via WriteBinaryData().
Implements plJSONWriter.
|
overridevirtual |
Outputs the value via WriteBinaryData().
Implements plJSONWriter.