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

Detailed Description

Parse a JSON Patch document (RFC 6902).

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

Public Member Functions

 JsonPatchParser (JsonPatchSet *patch_set)
void Begin ()
 Called when parsing begins.
void End ()
 Called when parsing completes.
void String (const std::string &value)
 Called when a string is encounted.
void Number (uint32_t value)
 Called when a uint32_t is encounted.
void Number (int32_t value)
 Called when a int32_t is encounted.
void Number (uint64_t value)
 Called when a uint64_t is encounted.
void Number (int64_t value)
 Called when a int64_t is encounted.
void Number (const JsonDouble::DoubleRepresentation &rep)
 Called when a double value is encounted.
void Number (double value)
 Called when a double value is encounted.
void Bool (bool value)
 Called when a bool is encounted.
void Null ()
 Called when a null token is encounted.
void OpenArray ()
 Called when an array starts.
void CloseArray ()
 Called when an array completes.
void OpenObject ()
 Called when an object starts.
void ObjectKey (const std::string &key)
 Called when a new key is encounted.
void CloseObject ()
 Called when an object completes.
void SetError (const std::string &error)
 Can be called at any time to indicate an error with the input data.
std::string GetError () const
 Check if parsing was successful.
bool IsValid () const
 Check if this patch document was valid.

Static Public Member Functions

static bool Parse (const std::string &input, JsonPatchSet *patch_set, std::string *error)
 Build a JsonPatchSet from a JSON document.

Member Function Documentation

void ola::web::JsonPatchParser::Number ( const JsonDouble::DoubleRepresentation rep)
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.

Implements ola::web::JsonParserInterface.

void ola::web::JsonPatchParser::ObjectKey ( const std::string &  key)
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.

Implements ola::web::JsonParserInterface.

bool ola::web::JsonPatchParser::Parse ( const std::string &  input,
JsonPatchSet patch_set,
std::string *  error 
)
static

Build a JsonPatchSet from a JSON document.

Parameters
inputthe JSON text to parse
patch_setthe JsonPatchSet to populate
errorwhere to store any errors.
void ola::web::JsonPatchParser::String ( const std::string &  value)
virtual

Called when a string is encounted.

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

Implements ola::web::JsonParserInterface.


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