diff options
author | Ilya Zverev <zverik@textual.ru> | 2016-07-15 18:01:19 +0300 |
---|---|---|
committer | Ilya Zverev <zverik@textual.ru> | 2016-07-19 12:53:21 +0300 |
commit | 46a5d58ba1fe3b274df149214fe1bbc7bb97b6e1 (patch) | |
tree | 3d9baa51399d40e78102e3e1c7a6add4573c0059 /3party | |
parent | 989c84e7bb93994a02ba482e83e8ec3a90ff91fa (diff) |
[generator] Add region info section to mwms
Diffstat (limited to '3party')
-rw-r--r-- | 3party/jansson/myjansson.cpp | 28 | ||||
-rw-r--r-- | 3party/jansson/myjansson.hpp | 2 |
2 files changed, 30 insertions, 0 deletions
diff --git a/3party/jansson/myjansson.cpp b/3party/jansson/myjansson.cpp index f1de73f435..5481a93ceb 100644 --- a/3party/jansson/myjansson.cpp +++ b/3party/jansson/myjansson.cpp @@ -81,4 +81,32 @@ void FromJSONObjectOptionalField(json_t * root, string const & field, json_int_t MYTHROW(my::Json::Exception, ("The field", field, "must contain a json number.")); result = json_integer_value(val); } + +void FromJSONObjectOptionalField(json_t * root, string const & field, bool & result, bool def) +{ + if (!json_is_object(root)) + MYTHROW(my::Json::Exception, ("Bad json object when parsing", field)); + json_t * val = json_object_get(root, field.c_str()); + if (!val) + { + result = def; + return; + } + if (!json_is_boolean(val)) + MYTHROW(my::Json::Exception, ("The field", field, "must contain a boolean value.")); + result = json_is_true(val); +} + +void FromJSONObjectOptionalField(json_t * root, string const & field, json_t *& result) +{ + json_t * obj = json_object_get(root, field.c_str()); + if (!obj) + { + result = nullptr; + return; + } + if (!json_is_object(obj)) + MYTHROW(my::Json::Exception, ("The field", field, "must contain a json object.")); + FromJSON(obj, result); +} } // namespace my diff --git a/3party/jansson/myjansson.hpp b/3party/jansson/myjansson.hpp index 9734a06b1f..634996c365 100644 --- a/3party/jansson/myjansson.hpp +++ b/3party/jansson/myjansson.hpp @@ -52,6 +52,8 @@ void FromJSONObject(json_t * root, string const & field, vector<T> & result) void FromJSONObjectOptionalField(json_t * root, string const & field, string & result); void FromJSONObjectOptionalField(json_t * root, string const & field, json_int_t & result); +void FromJSONObjectOptionalField(json_t * root, string const & field, bool & result, bool def = false); +void FromJSONObjectOptionalField(json_t * root, string const & field, json_t *& result); template <typename T> void FromJSONObjectOptionalField(json_t * root, string const & field, vector<T> & result) |