// // Created by m on 7/27/17. // #include "layers.hpp" #include "json_helper.hpp" #include "util.hpp" namespace wm { surface_id_to_layer::surface_id_to_layer(nlohmann::json const &j) { DB(j); if (j["type"] == "range") { this->id_min = get(j["first_surface_id"]); this->id_max = get(j["last_surface_id"]); } else { this->id_min = this->id_max = get(j["surface_id"]); } this->name = j["name"].get(); this->layer_id = get(j["layer_id"]); } struct result to_surface_id_to_layer_map( nlohmann::json const &j) { DB(j); try { surface_id_to_layer_map stl{}; std::transform( std::cbegin(j), std::cend(j), std::inserter(stl.mapping, stl.mapping.end()), [](nlohmann::json const &j) { return surface_id_to_layer(j); }); for (auto i : stl.mapping) { if (i.name.empty()) { return Err( "Found mapping w/o name"); } if (i.layer_id == -1 || i.id_min == -1 || i.id_max == -1) { return Err( "Found invalid/unset IDs in mapping"); } } return Ok(stl); } catch (std::exception &e) { return Err(e.what()); } } } // namespace wm