From 9dfa6b9427115e7402ce25e40e4d78b20d559c93 Mon Sep 17 00:00:00 2001 From: Marcus Fritzsch Date: Thu, 6 Jul 2017 11:32:50 +0200 Subject: Move all nlohmann::json to json_helper.cpp Signed-off-by: Marcus Fritzsch --- src/json_helper.cpp | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/json_helper.cpp (limited to 'src/json_helper.cpp') diff --git a/src/json_helper.cpp b/src/json_helper.cpp new file mode 100644 index 0000000..823c030 --- /dev/null +++ b/src/json_helper.cpp @@ -0,0 +1,72 @@ +#include "json_helper.hpp" + +#include + +#include + +using json = nlohmann::json; + +template +json_object *to_json_(T const *s) { + auto j = json::object({ + {"id", s->id}, + {"size", {{"width", s->size.w}, {"height", s->size.h}}}, + {"dst", + {{"width", s->dst_rect.w}, + {"height", s->dst_rect.h}, + {"x", s->dst_rect.x}, + {"y", s->dst_rect.y}}}, + {"src", + {{"width", s->src_rect.w}, + {"height", s->src_rect.h}, + {"x", s->src_rect.x}, + {"y", s->src_rect.y}}}, + {"visibility", s->visibility}, + {"opacity", s->opacity}, + {"orientation", s->orientation}, + }); + return json_tokener_parse(j.dump().c_str()); +} + +json_object *to_json(genivi::surface const *s) { return to_json_(s); } + +json_object *to_json(genivi::layer const *l) { return to_json_(l); } + +json_object *to_json(genivi::screen const *s) { + auto o = json_object_new_object(); + json_object_object_add(o, "id", json_object_new_int(s->id)); + return o; +} + +template +json_object *to_json_(T const &s) { + auto a = json_object_new_array(); + + if (!s.empty()) { + for (auto const &i : s) { + json_object_array_add(a, to_json(i.second.get())); + } + } + + return a; +} + +json_object *to_json(genivi::controller::surface_map_type const &s) { + return to_json_(s); +} + +json_object *to_json(genivi::controller::layer_map_type const &l) { + return to_json_(l); +} + +json_object *to_json(genivi::controller::screen_map_type const &s) { + return to_json_(s); +} + +json_object *to_json(std::vector const &v) { + auto a = json_object_new_array(); + for (const auto i : v) { + json_object_array_add(a, json_object_new_int(i)); + } + return a; +} -- cgit 1.2.3-korg