Open Lighting Architecture  0.9.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | List of all members
ola::web::JsonParserInterface Class Reference

Detailed Description

The interface used to handle tokens during JSON parsing.

As the JsonLexer traverses the input string, it calls the methods below.

Inheritance diagram for ola::web::JsonParserInterface:
ola::web::JsonParser ola::web::JsonPatchParser ola::web::SchemaParser

Public Member Functions

virtual void Begin ()=0
 Called when parsing begins.
virtual void End ()=0
 Called when parsing completes.
virtual void String (const std::string &value)=0
 Called when a string is encounted.
virtual void Number (uint32_t value)=0
 Called when a uint32_t is encounted.
virtual void Number (int32_t value)=0
 Called when a int32_t is encounted.
virtual void Number (uint64_t value)=0
 Called when a uint64_t is encounted.
virtual void Number (int64_t value)=0
 Called when a int64_t is encounted.
virtual void Number (const JsonDouble::DoubleRepresentation &rep)=0
 Called when a double value is encounted.
virtual void Number (double d)=0
 Called when a double value is encounted.
virtual void Bool (bool value)=0
 Called when a bool is encounted.
virtual void Null ()=0
 Called when a null token is encounted.
virtual void OpenArray ()=0
 Called when an array starts.
virtual void CloseArray ()=0
 Called when an array completes.
virtual void OpenObject ()=0
 Called when an object starts.
virtual void ObjectKey (const std::string &key)=0
 Called when a new key is encounted.
virtual void CloseObject ()=0
 Called when an object completes.
virtual void SetError (const std::string &error)=0
 Can be called at any time to indicate an error with the input data.

Member Function Documentation

virtual void ola::web::JsonParserInterface::Number ( const JsonDouble::DoubleRepresentation rep)
pure virtual

Called when a double value is encounted.

MinGW struggles with long doubles http://mingw.5.n7.nabble.com/Strange-behaviour-of-gcc-4-8-1-with-long-double-td32949.html To avoid this, and to keep as many significant bits as possible we keep the components of a double separate. See JsonDouble for details.

Implemented in ola::web::JsonPatchParser, ola::web::SchemaParser, and ola::web::JsonParser.

virtual void ola::web::JsonParserInterface::ObjectKey ( const std::string &  key)
pure virtual

Called when a new key is encounted.

This may be called multiple times for the same object. The standard doesn't specify how to handle duplicate keys, so I generally use the last one.

Implemented in ola::web::JsonPatchParser, ola::web::SchemaParser, and ola::web::JsonParser.

virtual void ola::web::JsonParserInterface::String ( const std::string &  value)
pure virtual

Called when a string is encounted.

This is not called for object keys, see ObjectKey() below.

Implemented in ola::web::JsonPatchParser, ola::web::SchemaParser, and ola::web::JsonParser.


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