XII Release 0.1.0
Loading...
Searching...
No Matches
xiiJSONReader Class Reference

Copyright (c) Theophilus Eriata. All Rights Reserved. More...

#include <JSONReader.h>

Inheritance diagram for xiiJSONReader:
[legend]

Classes

struct  Element

Public Types

enum class  ElementType : xiiInt8 { None , Dictionary , Array }

Public Member Functions

 xiiJSONReader ()
 Copyright (c) Theophilus Eriata. All Rights Reserved.
xiiResult Parse (xiiStreamReader &ref_input, xiiUInt32 uiFirstLineOffset=0)
const xiiVariantDictionary & GetTopLevelObject () const
 Returns the top-level object of the JSON document.
const xiiVariantArray & GetTopLevelArray () const
 Returns the top-level array of the JSON document.
ElementType GetTopLevelElementType () const
 Returns whether the top level element is an array or an object.
Public Member Functions inherited from xiiJSONParser
 xiiJSONParser ()
 Constructor.
void SetLogInterface (xiiLogInterface *pLog)
 Allows to specify a xiiLogInterface through which errors and warnings are reported.

Protected Attributes

xiiHybridArray< Element, 32 > m_Stack
bool m_bParsingError = false
xiiString m_sLastName
Protected Attributes inherited from xiiJSONParser
xiiLogInterface * m_pLogInterface = nullptr

Private Member Functions

virtual bool OnVariable (xiiStringView sVarName) override
 This function can be overridden to skip certain variables, however the overriding function must still call this.
virtual void OnReadValue (xiiStringView sValue) override
 [internal] Do not override further.
virtual void OnReadValue (double fValue) override
 [internal] Do not override further.
virtual void OnReadValue (bool bValue) override
 [internal] Do not override further.
virtual void OnReadValueNULL () override
 [internal] Do not override further.
virtual void OnBeginObject () override
 [internal] Do not override further.
virtual void OnEndObject () override
 [internal] Do not override further.
virtual void OnBeginArray () override
 [internal] Do not override further.
virtual void OnEndArray () override
 [internal] Do not override further.
virtual void OnParsingError (xiiStringView sMessage, bool bFatal, xiiUInt32 uiLine, xiiUInt32 uiColumn) override

Additional Inherited Members

Protected Member Functions inherited from xiiJSONParser
void SetInputStream (xiiStreamReader &stream, xiiUInt32 uiFirstLineOffset=0)
 Resets the parser to the start state and configures it to read from the given stream.
bool ContinueParsing ()
void ParseAll ()
 Calls ContinueParsing() in a loop until that returns false.
void SkipObject ()
void SkipArray ()
void ParsingError (xiiStringView sMessage, bool bFatal)
 Outputs that a parsing error was detected (via OnParsingError) and stops further parsing, if bFatal is set to true.

Detailed Description

Copyright (c) Theophilus Eriata. All Rights Reserved.

This JSON reader will read an entire JSON document into a hierarchical structure of xiiVariants.

The reader will parse the entire document and create a data structure of xiiVariants, which can then be traversed easily. Note that this class is much less efficient at reading large JSON documents, as it will dynamically allocate and copy objects around quite a bit. For small to medium sized documents that might be good enough, for large files one should prefer to write a dedicated class derived from xiiJSONParser.

Member Enumeration Documentation

◆ ElementType

enum class xiiJSONReader::ElementType : xiiInt8
strong
Enumerator
None 

The JSON document is entirely empty (not even containing an empty object or array).

Dictionary 

The top level element in the JSON document is an dictionary.

Array 

The top level element in the JSON document is an array.

Member Function Documentation

◆ OnBeginArray()

void xiiJSONReader::OnBeginArray ( )
overrideprivatevirtual

[internal] Do not override further.

Implements xiiJSONParser.

◆ OnBeginObject()

void xiiJSONReader::OnBeginObject ( )
overrideprivatevirtual

[internal] Do not override further.

Implements xiiJSONParser.

◆ OnEndArray()

void xiiJSONReader::OnEndArray ( )
overrideprivatevirtual

[internal] Do not override further.

Implements xiiJSONParser.

◆ OnEndObject()

void xiiJSONReader::OnEndObject ( )
overrideprivatevirtual

[internal] Do not override further.

Implements xiiJSONParser.

◆ OnParsingError()

void xiiJSONReader::OnParsingError ( xiiStringView sMessage,
bool bFatal,
xiiUInt32 uiLine,
xiiUInt32 uiColumn )
overrideprivatevirtual

Called when something unexpected is encountered in the JSON document.

The error message describes what was expected and what was encountered. If bFatal is true, the error has left the parser in an unrecoverable state and thus it not continue parsing. In that case client code will need to clean up it's open state, as no further OnEndObject() / OnEndArray() will be called. If bFatal is false, the document does not contain valid JSON, but the parser is able to continue still.

Reimplemented from xiiJSONParser.

◆ OnReadValue() [1/3]

void xiiJSONReader::OnReadValue ( bool bValue)
overrideprivatevirtual

[internal] Do not override further.

Implements xiiJSONParser.

◆ OnReadValue() [2/3]

void xiiJSONReader::OnReadValue ( double fValue)
overrideprivatevirtual

[internal] Do not override further.

Implements xiiJSONParser.

◆ OnReadValue() [3/3]

void xiiJSONReader::OnReadValue ( xiiStringView sValue)
overrideprivatevirtual

[internal] Do not override further.

Implements xiiJSONParser.

◆ OnReadValueNULL()

void xiiJSONReader::OnReadValueNULL ( )
overrideprivatevirtual

[internal] Do not override further.

Implements xiiJSONParser.

◆ OnVariable()

bool xiiJSONReader::OnVariable ( xiiStringView sVarName)
overrideprivatevirtual

This function can be overridden to skip certain variables, however the overriding function must still call this.

Implements xiiJSONParser.

◆ Parse()

xiiResult xiiJSONReader::Parse ( xiiStreamReader & ref_input,
xiiUInt32 uiFirstLineOffset = 0 )

Reads the entire stream and creates the internal data structure that represents the JSON document. Returns XII_FAILURE if any parsing error occurred.


The documentation for this class was generated from the following files:
  • /home/runner/work/XII/XII/Source/Engine/Foundation/IO/JSONReader.h
  • /home/runner/work/XII/XII/Source/Engine/Foundation/IO/Implementation/JSONReader.cpp