diff options
author | Anatoly Serdtcev <serdtcev@maps.me> | 2019-04-17 16:40:17 +0300 |
---|---|---|
committer | mpimenov <mpimenov@users.noreply.github.com> | 2019-04-19 17:12:26 +0300 |
commit | 1a33c9b777e35bf11b9a590f8e189edca3135fe1 (patch) | |
tree | d0de93b9a5f1cdbf92a257a8b9261b26d84cef91 /3party | |
parent | 3c8d57d8f06d46eafbb0c203c7931dbb069aaf27 (diff) |
[generator:geo_objects] Fix region find: border check
Diffstat (limited to '3party')
-rw-r--r-- | 3party/jansson/myjansson.hpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/3party/jansson/myjansson.hpp b/3party/jansson/myjansson.hpp index 1963f4bb48..6f580671b0 100644 --- a/3party/jansson/myjansson.hpp +++ b/3party/jansson/myjansson.hpp @@ -12,6 +12,8 @@ #include <string> #include <vector> +#include <boost/optional.hpp> + #include "3party/jansson/src/jansson.h" namespace base @@ -68,6 +70,14 @@ json_t * GetJSONOptionalField(json_t * root, char const * field); bool JSONIsNull(json_t * root); } // namespace base +template <typename T> +T FromJSON(json_t * root) +{ + T result{}; + FromJSON(root, result); + return result; +} + inline void FromJSON(json_t * root, json_t *& value) { value = root; } void FromJSON(json_t * root, double & result); @@ -99,6 +109,18 @@ void FromJSONObject(json_t * root, std::string const & field, T & result) } template <typename T> +boost::optional<T> FromJSONObjectOptional(json_t * root, char const * field) +{ + auto * json = base::GetJSONOptionalField(root, field); + if (!json) + return {}; + + boost::optional<T> result{T{}}; + FromJSON(json, *result); + return result; +} + +template <typename T> void FromJSONObjectOptionalField(json_t * root, std::string const & field, T & result) { auto * json = base::GetJSONOptionalField(root, field); |