layers: fix json to actually include numbers
authorMarcus Fritzsch <marcus_fritzsch@mentor.com>
Wed, 9 Aug 2017 13:57:18 +0000 (15:57 +0200)
committerMarcus Fritzsch <marcus_fritzsch@mentor.com>
Fri, 11 Aug 2017 08:13:48 +0000 (10:13 +0200)
Actually use numbers where we had number-strings. This simplifies the
json parsing quite a bit.

Signed-off-by: Marcus Fritzsch <marcus_fritzsch@mentor.com>
layers.json
src/app.cpp
src/layers.cpp

index 1146911..b5973a0 100644 (file)
    "mappings": [
       {
          "type": "single",
-         "surface_id": "1000",
+         "surface_id": 1000,
          "name": "HomeScreen",
-         "layer_id": "1000",
+         "layer_id": 1000,
          "area": { "type": "full" },
          "comment": "Single layer map for the HomeScreen, XXX: type is redundant, could also check existence of id/first_id+last_id"
       },
       {
          "type": "range",
-         "first_surface_id": "2000",
-         "last_surface_id": "2999",
+         "first_surface_id": 2000,
+         "last_surface_id": 2999,
          "name": "apps",
-         "layer_id": "1001",
-         "area": { "type": "rect", "rect": { "x": "0", "y": "100", "width": "-1", "height": "-201" } },
+         "layer_id": 1001,
+         "area": { "type": "rect", "rect": { "x": 0, "y": 100, "width": -1, "height": -201 } },
          "comment": "Range of IDs that will always be placed on layer 1001, negative rect values are interpreted as output_size.dimension - $value"
       },
       {
          "type": "range",
-         "first_surface_id": "3000",
-         "last_surface_id": "3999",
+         "first_surface_id": 3000,
+         "last_surface_id": 3999,
          "name": "popups",
-         "layer_id": "9999",
-         "area": { "type": "rect", "rect": { "x": "0", "y": "100", "width": "-1", "height": "-201" } },
+         "layer_id": 9999,
+         "area": { "type": "rect", "rect": { "x": 0, "y": 100, "width": -1, "height": -201 } },
          "comment": "Range of IDs that will always be placed on the popup layer, that gets a very high 'dummy' id of 9999"
       }
    ],
 
    "tests": [
-      { "surface_id": "1000", "expect_layer_id": "1000" },
-      { "surface_id": "1001", "expect_layer_id": "-1", "comment": "check against -1 for not found entries" },
-      { "surface_id": "1999", "expect_layer_id": "-1" },
-      { "surface_id": "2000", "expect_layer_id": "1001" },
-      { "surface_id": "2500", "expect_layer_id": "1001" },
-      { "surface_id": "2999", "expect_layer_id": "1001" },
-      { "surface_id": "3000", "expect_layer_id": "9999" },
-      { "surface_id": "3500", "expect_layer_id": "9999" },
-      { "surface_id": "3999", "expect_layer_id": "9999" },
-      { "surface_id": "4711", "expect_layer_id": "-1" }
+      { "surface_id": 1000, "expect_layer_id": 1000 },
+      { "surface_id": 1001, "expect_layer_id": -1, "comment": "check against -1 for not found entries" },
+      { "surface_id": 1999, "expect_layer_id": -1 },
+      { "surface_id": 2000, "expect_layer_id": 1001 },
+      { "surface_id": 2500, "expect_layer_id": 1001 },
+      { "surface_id": 2999, "expect_layer_id": 1001 },
+      { "surface_id": 3000, "expect_layer_id": 9999 },
+      { "surface_id": 3500, "expect_layer_id": 9999 },
+      { "surface_id": 3999, "expect_layer_id": 9999 },
+      { "surface_id": 4711, "expect_layer_id": -1 }
    ]
 }
index 6a7fc69..0a21635 100644 (file)
@@ -43,12 +43,12 @@ using json = nlohmann::json;
 struct wm::area area_from_json(json const &j) {
    DB(j);
    return wm::area{
-      j["name"].get<std::string>(),
+      j["name"],
       {
-         get<int32_t>(j["width"]), get<int32_t>(j["height"]),
-         get<int32_t>(j["x"]), get<int32_t>(j["y"]),
+         j["width"], j["height"],
+         j["x"], j["y"],
       },
-      get<uint32_t>(j["zorder"]),
+      j["zorder"],
    };
 }
 
@@ -56,7 +56,7 @@ result<struct layout> layout_from_json(json const &j) {
    DB(j);
    auto &ja = j["areas"];
 
-   auto l = layout{j["name"].get<std::string>(), uint32_t(ja.size()), {}};
+   auto l = layout{j["name"], uint32_t(ja.size()), {}};
 
    if (ja.size() > layout::MAX_N_AREAS) {
       return Err<struct layout>("Invalid number of areas in layout");
index 3205323..2209847 100644 (file)
@@ -27,19 +27,19 @@ using json = nlohmann::json;
 layer::layer(nlohmann::json const &j) {
    DB(j);
    if (j["type"] == "range") {
-      this->id_min = get<int>(j["first_surface_id"]);
-      this->id_max = get<int>(j["last_surface_id"]);
+      this->id_min = j["first_surface_id"];
+      this->id_max = j["last_surface_id"];
    } else {
-      this->id_min = this->id_max = get<int>(j["surface_id"]);
+      this->id_min = this->id_max = j["surface_id"];
    }
    this->name = j["name"].get<std::string>();
-   this->layer_id = get<int>(j["layer_id"]);
+   this->layer_id = j["layer_id"];
    this->rect = genivi::full_rect;
    if (j["area"]["type"] == "rect") {
       auto jr = j["area"]["rect"];
       this->rect = genivi::rect{
-         get<int32_t>(jr["width"]), get<int32_t>(jr["height"]),
-         get<int32_t>(jr["x"]), get<int32_t>(jr["y"]),
+         jr["width"], jr["height"],
+         jr["x"], jr["y"],
       };
    }
 }
@@ -82,8 +82,8 @@ struct result<struct layer_map> to_layer_map(nlohmann::json const &j) {
          std::transform(std::cbegin(jtests), std::cend(jtests),
                         std::back_inserter(tests), [](json const &j) {
                            return std::make_pair(
-                              get<int>(j["surface_id"]),
-                              get<int>(j["expect_layer_id"]));
+                              j["surface_id"],
+                              j["expect_layer_id"]);
                         });
 
          for (auto sid : tests) {