diff --git a/search/search_quality/helpers.cpp b/search/search_quality/helpers.cpp index f030c5c04f..433bf4fb1c 100644 --- a/search/search_quality/helpers.cpp +++ b/search/search_quality/helpers.cpp @@ -30,7 +30,7 @@ void ChangeMaxNumberOfOpenFiles(size_t n) namespace m2 { -void FromJSONObject(json_t * root, string const & field, RectD & rect) +void FromJSONObject(json_t * root, char const * field, RectD & rect) { json_t * r = base::GetJSONObligatoryField(root, field); double minX, minY, maxX, maxY; @@ -44,23 +44,38 @@ void FromJSONObject(json_t * root, string const & field, RectD & rect) rect.setMaxY(maxY); } -void ToJSONObject(json_t & root, string const & field, RectD const & rect) +void ToJSONObject(json_t & root, char const * field, RectD const & rect) { auto json = base::NewJSONObject(); ToJSONObject(*json, "minx", rect.minX()); ToJSONObject(*json, "miny", rect.minY()); ToJSONObject(*json, "maxx", rect.maxX()); ToJSONObject(*json, "maxy", rect.maxY()); - json_object_set_new(&root, field.c_str(), json.release()); + json_object_set_new(&root, field, json.release()); } -void FromJSONObject(json_t * root, string const & field, PointD & point) +void FromJSONObject(json_t * root, string const & field, RectD & rect) +{ + FromJSONObject(root, field.c_str(), rect); +} + +void ToJSONObject(json_t & root, string const & field, RectD const & rect) +{ + ToJSONObject(root, field.c_str(), rect); +} + +void FromJSONObject(json_t * root, char const * field, PointD & point) { json_t * p = base::GetJSONObligatoryField(root, field); ParsePoint(p, point); } -bool FromJSONObjectOptional(json_t * root, std::string const & field, PointD & point) +void FromJSONObject(json_t * root, string const & field, PointD & point) +{ + FromJSONObject(root, field.c_str(), point); +} + +bool FromJSONObjectOptional(json_t * root, char const * field, PointD & point) { json_t * p = base::GetJSONOptionalField(root, field); if (!p || base::JSONIsNull(p)) @@ -70,11 +85,21 @@ bool FromJSONObjectOptional(json_t * root, std::string const & field, PointD & p return true; } -void ToJSONObject(json_t & root, string const & field, PointD const & point) +void ToJSONObject(json_t & root, char const * field, PointD const & point) { auto json = base::NewJSONObject(); ToJSONObject(*json, "x", point.x); ToJSONObject(*json, "y", point.y); - json_object_set_new(&root, field.c_str(), json.release()); + json_object_set_new(&root, field, json.release()); +} + +bool FromJSONObjectOptional(json_t * root, std::string const & field, PointD & point) +{ + return FromJSONObjectOptional(root, field.c_str(), point); +} + +void ToJSONObject(json_t & root, string const & field, PointD const & point) +{ + ToJSONObject(root, field.c_str(), point); } } // namespace m2 diff --git a/search/search_quality/helpers.hpp b/search/search_quality/helpers.hpp index 1829c4b78c..6ea9eb9e76 100644 --- a/search/search_quality/helpers.hpp +++ b/search/search_quality/helpers.hpp @@ -17,11 +17,16 @@ void ChangeMaxNumberOfOpenFiles(size_t n); namespace m2 { +void FromJSONObject(json_t * root, char const * field, RectD & rect); +void ToJSONObject(json_t & root, char const * field, RectD const & rect); void FromJSONObject(json_t * root, std::string const & field, RectD & rect); void ToJSONObject(json_t & root, std::string const & field, RectD const & rect); +void FromJSONObject(json_t * root, char const * field, PointD & point); +bool FromJSONObjectOptional(json_t * root, char const * field, PointD & point); void FromJSONObject(json_t * root, std::string const & field, PointD & point); bool FromJSONObjectOptional(json_t * root, std::string const & field, PointD & point); +void ToJSONObject(json_t & root, char const * field, PointD const & point); void ToJSONObject(json_t & root, std::string const & field, PointD const & point); } // namespace m2 diff --git a/search/search_quality/sample.cpp b/search/search_quality/sample.cpp index 693ed8f44b..2f8ace2f91 100644 --- a/search/search_quality/sample.cpp +++ b/search/search_quality/sample.cpp @@ -200,7 +200,7 @@ void Sample::FillSearchParams(search::SearchParams & params) const params.m_needHighlighting = false; } -void FromJSONObject(json_t * root, string const & field, Sample::Result::Relevance & relevance) +void FromJSONObject(json_t * root, char const * field, Sample::Result::Relevance & relevance) { string r; FromJSONObject(root, field, r); @@ -214,7 +214,7 @@ void FromJSONObject(json_t * root, string const & field, Sample::Result::Relevan CHECK(false, ("Unknown relevance:", r)); } -void ToJSONObject(json_t & root, string const & field, Sample::Result::Relevance relevance) +void ToJSONObject(json_t & root, char const * field, Sample::Result::Relevance relevance) { using Relevance = Sample::Result::Relevance; @@ -226,7 +226,17 @@ void ToJSONObject(json_t & root, string const & field, Sample::Result::Relevance case Relevance::Irrelevant: r = "irrelevant"; break; } - json_object_set_new(&root, field.c_str(), json_string(r.c_str())); + json_object_set_new(&root, field, json_string(r.c_str())); +} + +void FromJSONObject(json_t * root, string const & field, Sample::Result::Relevance & relevance) +{ + FromJSONObject(root, field.c_str(), relevance); +} + +void ToJSONObject(json_t & root, string const & field, Sample::Result::Relevance relevance) +{ + ToJSONObject(root, field.c_str(), relevance); } void FromJSON(json_t * root, Sample::Result & result) diff --git a/search/search_quality/sample.hpp b/search/search_quality/sample.hpp index d63ed37d89..757877c64a 100644 --- a/search/search_quality/sample.hpp +++ b/search/search_quality/sample.hpp @@ -65,6 +65,9 @@ struct Sample std::vector m_relatedQueries; }; +void FromJSONObject(json_t * root, char const * field, + Sample::Result::Relevance & relevance); +void ToJSONObject(json_t & root, char const * field, Sample::Result::Relevance relevance); void FromJSONObject(json_t * root, std::string const & field, Sample::Result::Relevance & relevance); void ToJSONObject(json_t & root, std::string const & field, Sample::Result::Relevance relevance);