Twitch SDK (Internal)
Classes | Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
ttv::json::Reader Class Reference

Unserialize a JSON document into a Value. More...

#include <reader.h>

Classes

class  ErrorInfo
 
class  Token
 

Public Types

typedef char Char
 
typedef const CharLocation
 

Public Member Functions

 Reader ()
 Constructs a Reader allowing all features for parsing. More...
 
 Reader (const Features &features)
 Constructs a Reader allowing the specified feature set for parsing. More...
 
bool parse (const std::string &document, Value &root, bool collectComments=true)
 Read a Value from a JSON document. More...
 
bool parse (const char *beginDoc, const char *endDoc, Value &root, bool collectComments=true)
 Read a Value from a JSON document. More...
 
bool parse (std::istream &is, Value &root, bool collectComments=true)
 Parse from input stream. More...
 
std::string getFormatedErrorMessages () const
 Returns a user friendly string that list errors in the parsed document. More...
 

Private Types

enum  TokenType {
  tokenEndOfStream = 0, tokenObjectBegin, tokenObjectEnd, tokenArrayBegin,
  tokenArrayEnd, tokenString, tokenNumber, tokenTrue,
  tokenFalse, tokenNull, tokenArraySeparator, tokenMemberSeparator,
  tokenComment, tokenError
}
 
typedef std::deque< ErrorInfoErrors
 
typedef std::stack< Value * > Nodes
 

Private Member Functions

bool expectToken (TokenType type, Token &token, const char *message)
 
bool readToken (Token &token)
 
void skipSpaces ()
 
bool match (Location pattern, int patternLength)
 
bool readComment ()
 
bool readCStyleComment ()
 
bool readCppStyleComment ()
 
bool readString ()
 
void readNumber ()
 
bool readValue ()
 
bool readObject (Token &token)
 
bool readArray (Token &token)
 
bool decodeNumber (Token &token)
 
bool decodeString (Token &token)
 
bool decodeString (Token &token, std::string &decoded)
 
bool decodeDouble (Token &token)
 
bool decodeUnicodeCodePoint (Token &token, Location &current, Location end, unsigned int &unicode)
 
bool decodeUnicodeEscapeSequence (Token &token, Location &current, Location end, unsigned int &unicode)
 
bool addError (const std::string &message, Token &token, Location extra=0)
 
bool recoverFromError (TokenType skipUntilToken)
 
bool addErrorAndRecover (const std::string &message, Token &token, TokenType skipUntilToken)
 
void skipUntilSpace ()
 
ValuecurrentValue ()
 
Char getNextChar ()
 
void getLocationLineAndColumn (Location location, int &line, int &column) const
 
std::string getLocationLineAndColumn (Location location) const
 
void addComment (Location begin, Location end, CommentPlacement placement)
 
void skipCommentTokens (Token &token)
 

Private Attributes

Nodes nodes_
 
Errors errors_
 
std::string document_
 
Location begin_
 
Location end_
 
Location current_
 
Location lastValueEnd_
 
ValuelastValue_
 
std::string commentsBefore_
 
Features features_
 
bool collectComments_
 

Detailed Description

Unserialize a JSON document into a Value.


Class Documentation

◆ ttv::json::Reader::ErrorInfo

class ttv::json::Reader::ErrorInfo
Class Members
Location extra_
string message_
Token token_

◆ ttv::json::Reader::Token

class ttv::json::Reader::Token
Class Members
Location end_
Location start_
TokenType type_

Member Typedef Documentation

◆ Char

◆ Errors

typedef std::deque<ErrorInfo> ttv::json::Reader::Errors
private

◆ Location

◆ Nodes

typedef std::stack<Value *> ttv::json::Reader::Nodes
private

Member Enumeration Documentation

◆ TokenType

Enumerator
tokenEndOfStream 
tokenObjectBegin 
tokenObjectEnd 
tokenArrayBegin 
tokenArrayEnd 
tokenString 
tokenNumber 
tokenTrue 
tokenFalse 
tokenNull 
tokenArraySeparator 
tokenMemberSeparator 
tokenComment 
tokenError 

Constructor & Destructor Documentation

◆ Reader() [1/2]

ttv::json::Reader::Reader ( )

Constructs a Reader allowing all features for parsing.

◆ Reader() [2/2]

ttv::json::Reader::Reader ( const Features features)

Constructs a Reader allowing the specified feature set for parsing.

Member Function Documentation

◆ addComment()

void ttv::json::Reader::addComment ( Location  begin,
Location  end,
CommentPlacement  placement 
)
private

◆ addError()

bool ttv::json::Reader::addError ( const std::string &  message,
Token token,
Location  extra = 0 
)
private

◆ addErrorAndRecover()

bool ttv::json::Reader::addErrorAndRecover ( const std::string &  message,
Token token,
TokenType  skipUntilToken 
)
private

◆ currentValue()

Value& ttv::json::Reader::currentValue ( )
private

◆ decodeDouble()

bool ttv::json::Reader::decodeDouble ( Token token)
private

◆ decodeNumber()

bool ttv::json::Reader::decodeNumber ( Token token)
private

◆ decodeString() [1/2]

bool ttv::json::Reader::decodeString ( Token token)
private

◆ decodeString() [2/2]

bool ttv::json::Reader::decodeString ( Token token,
std::string &  decoded 
)
private

◆ decodeUnicodeCodePoint()

bool ttv::json::Reader::decodeUnicodeCodePoint ( Token token,
Location current,
Location  end,
unsigned int &  unicode 
)
private

◆ decodeUnicodeEscapeSequence()

bool ttv::json::Reader::decodeUnicodeEscapeSequence ( Token token,
Location current,
Location  end,
unsigned int &  unicode 
)
private

◆ expectToken()

bool ttv::json::Reader::expectToken ( TokenType  type,
Token token,
const char *  message 
)
private

◆ getFormatedErrorMessages()

std::string ttv::json::Reader::getFormatedErrorMessages ( ) const

Returns a user friendly string that list errors in the parsed document.

Returns
Formatted error message with the list of errors with their location in the parsed document. An empty string is returned if no error occurred during parsing.

◆ getLocationLineAndColumn() [1/2]

void ttv::json::Reader::getLocationLineAndColumn ( Location  location,
int &  line,
int &  column 
) const
private

◆ getLocationLineAndColumn() [2/2]

std::string ttv::json::Reader::getLocationLineAndColumn ( Location  location) const
private

◆ getNextChar()

Char ttv::json::Reader::getNextChar ( )
private

◆ match()

bool ttv::json::Reader::match ( Location  pattern,
int  patternLength 
)
private

◆ parse() [1/3]

bool ttv::json::Reader::parse ( const std::string &  document,
Value root,
bool  collectComments = true 
)

Read a Value from a JSON document.

Parameters
documentUTF-8 encoded string containing the document to read.
root[out] Contains the root value of the document if it was successfully parsed.
collectCommentstrue to collect comment and allow writing them back during serialization, false to discard comments. This parameter is ignored if Features::allowComments_ is false.
Returns
true if the document was successfully parsed, false if an error occurred.

◆ parse() [2/3]

bool ttv::json::Reader::parse ( const char *  beginDoc,
const char *  endDoc,
Value root,
bool  collectComments = true 
)

Read a Value from a JSON document.

Parameters
beginDoc- document UTF-8 encoded string containing the document to read.
root[out] Contains the root value of the document if it was successfully parsed.
collectCommentstrue to collect comment and allow writing them back during serialization, false to discard comments. This parameter is ignored if Features::allowComments_ is false.
Returns
true if the document was successfully parsed, false if an error occurred.

◆ parse() [3/3]

bool ttv::json::Reader::parse ( std::istream &  is,
Value root,
bool  collectComments = true 
)

Parse from input stream.

See also
json::operator>>(std::istream&, json::Value&).

◆ readArray()

bool ttv::json::Reader::readArray ( Token token)
private

◆ readComment()

bool ttv::json::Reader::readComment ( )
private

◆ readCppStyleComment()

bool ttv::json::Reader::readCppStyleComment ( )
private

◆ readCStyleComment()

bool ttv::json::Reader::readCStyleComment ( )
private

◆ readNumber()

void ttv::json::Reader::readNumber ( )
private

◆ readObject()

bool ttv::json::Reader::readObject ( Token token)
private

◆ readString()

bool ttv::json::Reader::readString ( )
private

◆ readToken()

bool ttv::json::Reader::readToken ( Token token)
private

◆ readValue()

bool ttv::json::Reader::readValue ( )
private

◆ recoverFromError()

bool ttv::json::Reader::recoverFromError ( TokenType  skipUntilToken)
private

◆ skipCommentTokens()

void ttv::json::Reader::skipCommentTokens ( Token token)
private

◆ skipSpaces()

void ttv::json::Reader::skipSpaces ( )
private

◆ skipUntilSpace()

void ttv::json::Reader::skipUntilSpace ( )
private

Member Data Documentation

◆ begin_

Location ttv::json::Reader::begin_
private

◆ collectComments_

bool ttv::json::Reader::collectComments_
private

◆ commentsBefore_

std::string ttv::json::Reader::commentsBefore_
private

◆ current_

Location ttv::json::Reader::current_
private

◆ document_

std::string ttv::json::Reader::document_
private

◆ end_

Location ttv::json::Reader::end_
private

◆ errors_

Errors ttv::json::Reader::errors_
private

◆ features_

Features ttv::json::Reader::features_
private

◆ lastValue_

Value* ttv::json::Reader::lastValue_
private

◆ lastValueEnd_

Location ttv::json::Reader::lastValueEnd_
private

◆ nodes_

Nodes ttv::json::Reader::nodes_
private

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