add config, a simple config interface. i.e. key-value-store
authorMarcus Fritzsch <marcus_fritzsch@mentor.com>
Tue, 1 Aug 2017 15:13:56 +0000 (17:13 +0200)
committerMarcus Fritzsch <marcus_fritzsch@mentor.com>
Tue, 8 Aug 2017 15:24:00 +0000 (17:24 +0200)
Signed-off-by: Marcus Fritzsch <marcus_fritzsch@mentor.com>
src/CMakeLists.txt
src/config.cpp [new file with mode: 0644]
src/config.hpp [new file with mode: 0644]

index aac21d9..d335631 100644 (file)
@@ -26,7 +26,7 @@ add_library(winman MODULE
    app.hpp app.cpp
    result.hpp
    afb_binding_api.hpp
-   afb_binding_glue.inl layers.cpp layers.hpp controller_hooks.hpp)
+   afb_binding_glue.inl layers.cpp layers.hpp controller_hooks.hpp config.cpp config.hpp)
 
 target_include_directories(winman
     PRIVATE
diff --git a/src/config.cpp b/src/config.cpp
new file mode 100644 (file)
index 0000000..1843639
--- /dev/null
@@ -0,0 +1,15 @@
+//
+// Created by mfritzsc on 8/1/17.
+//
+
+#include "config.hpp"
+
+namespace wm {
+
+config::config() : cfg() {
+   // Supply default values for these...
+   this->cfg["layers.json"] = getenv("LAYERS_JSON") ?: "../layers.json";
+   this->cfg["layout.json"] = getenv("LAYOUT_JSON") ?: "../layout.json";
+}
+
+}  // namespace wm
\ No newline at end of file
diff --git a/src/config.hpp b/src/config.hpp
new file mode 100644 (file)
index 0000000..976371b
--- /dev/null
@@ -0,0 +1,37 @@
+//
+// Created by mfritzsc on 8/1/17.
+//
+
+#ifndef TMCAGLWM_CONFIG_HPP
+#define TMCAGLWM_CONFIG_HPP
+
+#include <map>
+#include <experimental/optional>
+
+namespace wm {
+
+using std::experimental::optional;
+using std::experimental::nullopt;
+
+struct config {
+   typedef std::map<std::string, std::string> map;
+
+   map cfg;
+
+   config();
+
+   optional<std::string> get_string(char const *s) {
+      auto i = this->cfg.find(s);
+      return i != this->cfg.end() ? optional<std::string>(i->second) : nullopt;
+   }
+
+   optional<int> get_int(char const *s) {
+      auto i = this->cfg.find(s);
+      return i != this->cfg.end() ? optional<int>(std::stoi(i->second)) : nullopt;
+   }
+};
+
+}  // namespace wm
+
+
+#endif //TMCAGLWM_CONFIG_HPP