Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/3party
diff options
context:
space:
mode:
authorYuri Gorshenin <y@maps.me>2017-04-19 13:51:25 +0300
committerVladimir Byko-Ianko <bykoianko@gmail.com>2017-04-19 15:08:21 +0300
commit6d3583c937b1878c8f796e659ef03d038cde17ab (patch)
tree79e92b416ac471e93ac7024c294419afba84822f /3party
parentacd974ec22d3a49785412bfcc2b602277156b4c9 (diff)
[build] Various fixes to master build.
Diffstat (limited to '3party')
-rw-r--r--3party/jansson/myjansson.cpp64
-rw-r--r--3party/jansson/myjansson.hpp9
2 files changed, 53 insertions, 20 deletions
diff --git a/3party/jansson/myjansson.cpp b/3party/jansson/myjansson.cpp
index 3e1b0d3f75..0b853747da 100644
--- a/3party/jansson/myjansson.cpp
+++ b/3party/jansson/myjansson.cpp
@@ -1,7 +1,38 @@
#include "3party/jansson/myjansson.hpp"
+#include <type_traits>
+
using namespace std;
+namespace
+{
+template <typename T>
+typename enable_if<is_integral<T>::value, void>::type ReadIntegral(json_t * root,
+ string const & field, T & result)
+{
+ auto * val = my::GetJSONObligatoryField(root, field);
+ if (!json_is_number(val))
+ MYTHROW(my::Json::Exception, ("The field", field, "must contain a json number."));
+ result = static_cast<T>(json_integer_value(val));
+}
+
+template <typename T>
+typename enable_if<is_integral<T>::value, void>::type ReadIntegralOptional(json_t * root,
+ string const & field,
+ T & result)
+{
+ auto * val = my::GetJSONOptionalField(root, field);
+ if (!val)
+ {
+ result = 0;
+ return;
+ }
+ if (!json_is_number(val))
+ MYTHROW(my::Json::Exception, ("The field", field, "must contain a json number."));
+ result = static_cast<T>(json_integer_value(val));
+}
+} // namespace
+
namespace my
{
json_t * GetJSONObligatoryField(json_t * root, std::string const & field)
@@ -28,25 +59,24 @@ void FromJSONObject(json_t * root, string const & field, double & result)
result = json_number_value(val);
}
-void FromJSONObject(json_t * root, string const & field, json_int_t & result)
+void FromJSONObject(json_t * root, string const & field, int & result)
{
- auto * val = my::GetJSONObligatoryField(root, field);
- if (!json_is_number(val))
- MYTHROW(my::Json::Exception, ("The field", field, "must contain a json number."));
- result = json_integer_value(val);
+ ReadIntegral(root, field, result);
}
-void FromJSONObjectOptionalField(json_t * root, string const & field, json_int_t & result)
+void FromJSONObject(json_t * root, string const & field, int64_t & result)
{
- auto * val = my::GetJSONOptionalField(root, field);
- if (!val)
- {
- result = 0;
- return;
- }
- if (!json_is_number(val))
- MYTHROW(my::Json::Exception, ("The field", field, "must contain a json number."));
- result = json_integer_value(val);
+ ReadIntegral(root, field, result);
+}
+
+void FromJSONObjectOptionalField(json_t * root, string const & field, int & result)
+{
+ ReadIntegralOptional(root, field, result);
+}
+
+void FromJSONObjectOptionalField(json_t * root, string const & field, int64_t & result)
+{
+ ReadIntegralOptional(root, field, result);
}
void FromJSONObjectOptionalField(json_t * root, string const & field, double & result)
@@ -95,10 +125,10 @@ void ToJSONObject(json_t & root, string const & field, double value)
void ToJSONObject(json_t & root, string const & field, int value)
{
- json_object_set_new(&root, field.c_str(), json_integer(value));
+ ToJSONObject(root, field, static_cast<int64_t>(value));
}
-void ToJSONObject(json_t & root, std::string const & field, json_int_t value)
+void ToJSONObject(json_t & root, std::string const & field, int64_t value)
{
json_object_set_new(&root, field.c_str(), json_integer(value));
}
diff --git a/3party/jansson/myjansson.hpp b/3party/jansson/myjansson.hpp
index 3945675e8a..7b68c4211e 100644
--- a/3party/jansson/myjansson.hpp
+++ b/3party/jansson/myjansson.hpp
@@ -5,6 +5,7 @@
#include "base/exception.hpp"
#include "base/string_utils.hpp"
+#include <cstdint>
#include <memory>
#include <string>
#include <vector>
@@ -49,9 +50,11 @@ json_t * GetJSONOptionalField(json_t * root, std::string const & field);
inline void FromJSON(json_t * root, json_t *& value) { value = root; }
void FromJSONObject(json_t * root, std::string const & field, double & result);
-void FromJSONObject(json_t * root, std::string const & field, json_int_t & result);
+void FromJSONObject(json_t * root, std::string const & field, int & result);
+void FromJSONObject(json_t * root, std::string const & field, int64_t & result);
-void FromJSONObjectOptionalField(json_t * root, std::string const & field, json_int_t & result);
+void FromJSONObjectOptionalField(json_t * root, std::string const & field, int & result);
+void FromJSONObjectOptionalField(json_t * root, std::string const & field, int64_t & result);
void FromJSONObjectOptionalField(json_t * root, std::string const & field, double & result);
void FromJSONObjectOptionalField(json_t * root, std::string const & field, bool & result,
bool def = false);
@@ -59,7 +62,7 @@ void FromJSONObjectOptionalField(json_t * root, std::string const & field, json_
void ToJSONObject(json_t & root, std::string const & field, double value);
void ToJSONObject(json_t & root, std::string const & field, int value);
-void ToJSONObject(json_t & root, std::string const & field, json_int_t value);
+void ToJSONObject(json_t & root, std::string const & field, int64_t value);
void FromJSON(json_t * root, std::string & result);
inline my::JSONPtr ToJSON(std::string const & s) { return my::NewJSONString(s); }