Myra Canyon  v0.0.1-768
network control
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Json::Reader Class Reference

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

#include "json.h"

Collaboration diagram for Json::Reader:

Classes

class  ErrorInfo
 
struct  StructuredError
 An error tagged with where in the JSON text it was encountered. More...
 
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...
 
std::string getFormattedErrorMessages () const
 Returns a user friendly string that list errors in the parsed document. More...
 
std::vector< StructuredErrorgetStructuredErrors () const
 Returns a vector of structured erros encounted while parsing. More...
 
bool pushError (const Value &value, const std::string &message)
 Add a semantic error message. More...
 
bool pushError (const Value &value, const std::string &message, const Value &extra)
 Add a semantic error message with extra context. More...
 
bool good () const
 Return whether there are any errors. 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 decodeNumber (Token &token, Value &decoded)
 
bool decodeString (Token &token)
 
bool decodeString (Token &token, std::string &decoded)
 
bool decodeDouble (Token &token)
 
bool decodeDouble (Token &token, Value &decoded)
 
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.

Member Typedef Documentation

typedef char Json::Reader::Char
typedef std::deque<ErrorInfo> Json::Reader::Errors
private
typedef const Char* Json::Reader::Location
typedef std::stack<Value*> Json::Reader::Nodes
private

Member Enumeration Documentation

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

Constructor & Destructor Documentation

Json::Reader::Reader ( )

Constructs a Reader allowing all features for parsing.

Json::Reader::Reader ( const Features features)

Constructs a Reader allowing the specified feature set for parsing.

Member Function Documentation

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

Value & Json::Reader::currentValue ( )
private

Here is the caller graph for this function:

bool Json::Reader::decodeDouble ( Token token)
private

Here is the call graph for this function:

Here is the caller graph for this function:

bool Json::Reader::decodeDouble ( Token token,
Value decoded 
)
private

Here is the call graph for this function:

bool Json::Reader::decodeNumber ( Token token)
private

Here is the call graph for this function:

Here is the caller graph for this function:

bool Json::Reader::decodeNumber ( Token token,
Value decoded 
)
private

Here is the call graph for this function:

bool Json::Reader::decodeString ( Token token)
private

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the call graph for this function:

std::string 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.
Deprecated:
Use getFormattedErrorMessages() instead (typo fix).

Here is the call graph for this function:

std::string Json::Reader::getFormattedErrorMessages ( ) 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.

Here is the call graph for this function:

Here is the caller graph for this function:

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

Here is the caller graph for this function:

std::string Json::Reader::getLocationLineAndColumn ( Location  location) const
private

Here is the call graph for this function:

Reader::Char Json::Reader::getNextChar ( )
private

Here is the caller graph for this function:

std::vector< Reader::StructuredError > Json::Reader::getStructuredErrors ( ) const

Returns a vector of structured erros encounted while parsing.

Returns
A (possibly empty) vector of StructuredError objects. Currently only one error can be returned, but the caller should tolerate multiple errors. This can occur if the parser recovers from a non-fatal parse error and then encounters additional errors.
bool Json::Reader::good ( ) const

Return whether there are any errors.

Returns
true if there are no errors to report false if errors have occurred.
bool Json::Reader::match ( Location  pattern,
int  patternLength 
)
private

Here is the caller graph for this function:

bool 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.

Here is the caller graph for this function:

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

Read a Value from a JSON document.

Parameters
beginDocPointer on the beginning of the UTF-8 encoded string of the document to read.
endDocPointer on the end of the UTF-8 encoded string of the document to read. \ Must be >= beginDoc.
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.

Here is the call graph for this function:

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

Parse from input stream.

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

Here is the call graph for this function:

bool Json::Reader::pushError ( const Value value,
const std::string &  message 
)

Add a semantic error message.

Parameters
valueJSON Value location associated with the error
messageThe error message.
Returns
true if the error was successfully added, false if the Value offset exceeds the document size.

Here is the call graph for this function:

bool Json::Reader::pushError ( const Value value,
const std::string &  message,
const Value extra 
)

Add a semantic error message with extra context.

Parameters
valueJSON Value location associated with the error
messageThe error message.
extraAdditional JSON Value location to contextualize the error
Returns
true if the error was successfully added, false if either Value offset exceeds the document size.

Here is the call graph for this function:

bool Json::Reader::readArray ( Token token)
private

Here is the call graph for this function:

Here is the caller graph for this function:

bool Json::Reader::readComment ( )
private

Here is the call graph for this function:

Here is the caller graph for this function:

bool Json::Reader::readCppStyleComment ( )
private

Here is the call graph for this function:

Here is the caller graph for this function:

bool Json::Reader::readCStyleComment ( )
private

Here is the call graph for this function:

Here is the caller graph for this function:

void Json::Reader::readNumber ( )
private

Here is the call graph for this function:

Here is the caller graph for this function:

bool Json::Reader::readObject ( Token token)
private

Here is the call graph for this function:

Here is the caller graph for this function:

bool Json::Reader::readString ( )
private

Here is the call graph for this function:

Here is the caller graph for this function:

bool Json::Reader::readToken ( Token token)
private

Here is the call graph for this function:

Here is the caller graph for this function:

bool Json::Reader::readValue ( )
private

Here is the call graph for this function:

Here is the caller graph for this function:

bool Json::Reader::recoverFromError ( TokenType  skipUntilToken)
private

Here is the call graph for this function:

Here is the caller graph for this function:

void Json::Reader::skipCommentTokens ( Token token)
private

Here is the call graph for this function:

Here is the caller graph for this function:

void Json::Reader::skipSpaces ( )
private

Here is the caller graph for this function:

void Json::Reader::skipUntilSpace ( )
private

Member Data Documentation

Location Json::Reader::begin_
private
bool Json::Reader::collectComments_
private
std::string Json::Reader::commentsBefore_
private
Location Json::Reader::current_
private
std::string Json::Reader::document_
private
Location Json::Reader::end_
private
Errors Json::Reader::errors_
private
Features Json::Reader::features_
private
Value* Json::Reader::lastValue_
private
Location Json::Reader::lastValueEnd_
private
Nodes Json::Reader::nodes_
private

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