|
DLPrimitives
|
This class is central representation of json objects. More...
#include <include/dlprim/json.hpp>
Public Member Functions | |
| json_type | type () const |
| Get the type of the value. | |
| bool | is_undefined () const |
| Returns true if type()==json::is_undefined. | |
| bool | is_null () const |
| Returns true if type()==json::is_null. | |
| bool const & | boolean () const |
| Convert value to boolean, throws bad_value_cast if value's type is not boolean. | |
| double const & | number () const |
| Convert value to double, throws bad_value_cast if value's type is not number. | |
| std::string const & | str () const |
| Convert value to strng, throws bad_value_cast if value's type is not string. | |
| json::object const & | object () const |
| Convert value to json::object, throws bad_value_cast if value's type is not object. | |
| json::array const & | array () const |
| Convert value to json::array, throws bad_value_cast if value's type is not array. | |
| bool & | boolean () |
| Get reference to bool variable that represents this value, throws bad_value_cast if type is invalid. | |
| double & | number () |
| Get reference to double variable that represents this value, throws bad_value_cast if type is invalid. | |
| std::string & | str () |
| Get reference to string variable that represents this value, throws bad_value_cast if type is invalid. | |
| json::object & | object () |
| Get reference to object variable that represents this value, throws bad_value_cast if type is invalid. | |
| json::array & | array () |
| Get reference to array variable that represents this value, throws bad_value_cast if type is invalid. | |
| void | undefined () |
| Set value to undefined type. | |
| void | null () |
| Set value to null type. | |
| void | boolean (bool) |
| Set value to boolean type and assign it. | |
| void | number (double) |
| Set value to numeric type and assign it. | |
| void | str (std::string const &) |
| Set value to string type and assign it. | |
| void | object (json::object const &) |
| Set value to object type and assign it. | |
| void | array (json::array const &) |
| Set value to array type and assign it. | |
| template<typename T > | |
| T | get_value () const |
| Convert the value to type T, using json::traits, throws bad_value_cast if conversion is not possible. | |
| template<typename T > | |
| void | set_value (T const &v) |
| Convert the object v of type T to the value. | |
| value const & | find (std::string const &path) const |
| Searches a value in the path path. More... | |
| value const & | find (char const *path) const |
| Searches a value in the path path. More... | |
| value const & | at (std::string const &path) const |
| Searches a value in the path path, if not found throw bad_value_cast. More... | |
| value const & | at (char const *path) const |
| Searches a value in the path path, if not found throw bad_value_cast. More... | |
| value & | at (std::string const &path) |
| Searches a value in the path path, if not found throw bad_value_cast. More... | |
| value & | at (char const *path) |
| Searches a value in the path path, if not found throw bad_value_cast. More... | |
| void | at (std::string const &path, value const &v) |
| Sets the value v at the path path, if the path invalid, creates it. | |
| void | at (char const *path, value const &v) |
| Sets the value v at the path path, if the path invalid, creates it. | |
| template<typename T > | |
| value (T const &v) | |
| Creates a value from and object v of type T. | |
| json_type | type (std::string const &path) const |
| Returns the type of variable in path, if not found returns undefined. More... | |
| json_type | type (char const *path) const |
| Returns the type of variable in path, if not found returns undefined. More... | |
| template<typename T > | |
| void | set (std::string const &path, T const &v) |
| Convert an object v of type T to a value at specific path, same as at(path,value(v)) | |
| template<typename T > | |
| void | set (char const *path, T const &v) |
| Convert an object v of type T to a value at specific path, same as at(path,value(v)) | |
| std::string | get (std::string const &path, char const *def) const |
| Get a string value from a path path. If the path is not invalid or the object is not of type string at this path, returns def instead. | |
| std::string | get (char const *path, char const *def) const |
| Get a string value from a path path. If the path is not invalid or the object is not of type string at this path, returns def instead. | |
| template<typename T > | |
| T | get (std::string const &path) const |
| Get an object of type T from the path path. Throws bad_value_cast if such path does not exists of conversion can't be done. | |
| template<typename T > | |
| T | get (char const *path) const |
| Get an object of type T from the path path. Throws bad_value_cast if such path does not exists of conversion can't be done. | |
| template<typename T > | |
| T | get (char const *path, T const &def) const |
| Get an object of type T from the path path. Returns def if such path does not exists of conversion can't be done. | |
| template<typename T > | |
| T | get (std::string const &path, T const &def) const |
| Get an object of type T from the path path. Returns def if such path does not exists of conversion can't be done. | |
| value & | operator[] (std::string const &name) |
| Returns a reference to the node name of the value. For value = {"x",10} and name == "x" return a value that holds 10. More... | |
| value const & | operator[] (std::string const &name) const |
| Returns reference to the node name of the value. For value = {"x",10} and name == "x" return a value that holds 10. More... | |
| value & | operator[] (size_t n) |
| Returns a reference to n 'th entry of the array. If the value is not an array it is reset to array, of the array is too small it is resized to size of at least n+1. | |
| value const & | operator[] (size_t n) const |
| Returns a reference to n 'th entry of array, if the value is not array or n is too big, throws bad_value_cast. | |
| std::string | save (int how=compact) const |
| Convert a value to std::string, if how has value readable it is converted with indentation. | |
| void | save (std::ostream &out, int how=compact) const |
| Write a value to std::ostream, if how has value readable it is converted with indentation. | |
| bool | load (std::istream &in, bool full, int *line_number=0) |
| Read a value from std::istream. More... | |
| bool | load (char const *&begin, char const *end, bool full, int *line_number=0) |
| Read a value from character range. More... | |
| bool | operator== (value const &other) const |
| Compare two values objects, return true if they are same. | |
| bool | operator!= (value const &other) const |
| Compare two values objects, return false if they are same. | |
| value & | operator= (value &&other) |
| Move assignment. | |
| value (value &&other) | |
| Move constructor. | |
| value (value const &other) | |
| Copy constructor. | |
| value const & | operator= (value const &other) |
| Assignment operator. | |
| value () | |
| Default value - creates a value of undefined type. | |
| ~value () | |
| Destructor. | |
| void | swap (value &other) |
| Swaps two values, does not throw. | |
Friends | |
| struct | copyable |
This class is central representation of json objects.
It can be a value from any type including scalar, object, array and undefined
| value const& dlprim::json::value::at | ( | std::string const & | path | ) | const |
Searches a value in the path path, if not found throw bad_value_cast.
For example if the json::value represents { "x" : { "y" : 10 } }, then find("x.y") would return a reference to value that hold a number 10, find("x") returns a reference to a value that holds an object { "y" : 10 } and find("foo") throws
| value const& dlprim::json::value::at | ( | char const * | path | ) | const |
Searches a value in the path path, if not found throw bad_value_cast.
For example if the json::value represents { "x" : { "y" : 10 } }, then find("x.y") would return a reference to value that hold a number 10, find("x") returns a reference to a value that holds an object { "y" : 10 } and find("foo") throws
| value& dlprim::json::value::at | ( | std::string const & | path | ) |
Searches a value in the path path, if not found throw bad_value_cast.
For example if the json::value represents { "x" : { "y" : 10 } }, then find("x.y") would return a reference to value that hold a number 10, find("x") returns a reference to a value that holds an object { "y" : 10 } and find("foo") throws
| value& dlprim::json::value::at | ( | char const * | path | ) |
Searches a value in the path path, if not found throw bad_value_cast.
For example if the json::value represents { "x" : { "y" : 10 } }, then find("x.y") would return a reference to value that hold a number 10, find("x") returns a reference to a value that holds an object { "y" : 10 } and find("foo") throws
| value const& dlprim::json::value::find | ( | std::string const & | path | ) | const |
Searches a value in the path path.
For example if the json::value represents { "x" : { "y" : 10 } }, then find("x.y") would return a reference to value that hold a number 10, find("x") returns a reference to a value that holds an object { "y" : 10 } and find("foo") would return value of undefined type.
| value const& dlprim::json::value::find | ( | char const * | path | ) | const |
Searches a value in the path path.
For example if the json::value represents { "x" : { "y" : 10 } }, then find("x.y") would return a reference to value that hold a number 10, find("x") returns a reference to a value that holds an object { "y" : 10 } and find("foo") would return value of undefined type.
| bool dlprim::json::value::load | ( | std::istream & | in, |
| bool | full, | ||
| int * | line_number = 0 |
||
| ) |
Read a value from std::istream.
Note: only JSON object and JSON array are considered valid values
| in | the std::istream used to read the data |
| full | require EOF once the object is read, otherwise consider it as syntax error |
| line_number | return a number of the line where syntax error occurred |
| bool dlprim::json::value::load | ( | char const *& | begin, |
| char const * | end, | ||
| bool | full, | ||
| int * | line_number = 0 |
||
| ) |
Read a value from character range.
Note: only JSON object and JSON array are considered valid values
| begin | - begin of the text range, at the end points to the end of parsed range |
| end | - end of the text range |
| full | require EOF once the object is read, otherwise consider it as syntax error |
| line_number | return a number of the line where syntax error occurred |
| value& dlprim::json::value::operator[] | ( | std::string const & | name | ) |
Returns a reference to the node name of the value. For value = {"x",10} and name == "x" return a value that holds 10.
If value is not object it's type set to object. If such node does not exits, it is created with undefined value
| value const& dlprim::json::value::operator[] | ( | std::string const & | name | ) | const |
Returns reference to the node name of the value. For value = {"x",10} and name == "x" return a value that holds 10.
If value is not object or such node does not exits, throws bad_value_cast
|
inline |
|
inline |
1.8.11