add license text to implementation files
[staging/windowmanager.git] / src / json_helper.hpp
index 7d5d26f..68aaa08 100644 (file)
@@ -1,7 +1,25 @@
+/*
+ * Copyright (C) 2017 Mentor Graphics Development (Deutschland) GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 #ifndef TMCAGLWM_JSON_HELPER_HPP
 #define TMCAGLWM_JSON_HELPER_HPP
 
+#include "result.hpp"
 #include "wayland.hpp"
+#include <json.hpp>
 
 struct json_object;
 
@@ -9,4 +27,14 @@ json_object *to_json(genivi::screen const *s);
 json_object *to_json(genivi::controller::props_map const &s);
 json_object *to_json(std::vector<uint32_t> const &v);
 
+// We ned to manually unwrap numbers
+template <typename T>
+wm::result<T> get(nlohmann::json const &j) {
+   // DB(j);
+   T r;
+   std::istringstream s(j.get<std::string>());
+   s >> r;
+   return !s.eof() || s.fail() ? wm::Err<T>("Could not read int") : wm::Ok(r);
+}
+
 #endif  // TMCAGLWM_JSON_HELPER_HPP