diff options
author | Marcus Fritzsch <m@fritschy.de> | 2017-07-28 00:36:46 +0200 |
---|---|---|
committer | Marcus Fritzsch <marcus_fritzsch@mentor.com> | 2017-08-08 17:24:00 +0200 |
commit | 4eec91fcd22a1ff5473f3721feed1f15095682e3 (patch) | |
tree | 2932751cbe23b49875c8c66927f4ce70777aff5e | |
parent | 64ed0324fe01c76ba7ada09243228b5ec45c6cda (diff) |
layers: move get_layer_for_surface() to .cpp
Signed-off-by: Marcus Fritzsch <marcus_fritzsch@mentor.com>
-rw-r--r-- | src/layers.cpp | 25 | ||||
-rw-r--r-- | src/layers.hpp | 25 |
2 files changed, 29 insertions, 21 deletions
diff --git a/src/layers.cpp b/src/layers.cpp index 8bd9b8f..07586ad 100644 --- a/src/layers.cpp +++ b/src/layers.cpp @@ -2,8 +2,10 @@ // Created by m on 7/27/17. // -#include "layers.hpp" +#include <algorithm> + #include "json_helper.hpp" +#include "layers.hpp" #include "util.hpp" namespace wm { @@ -45,4 +47,25 @@ struct result<struct surface_id_to_layer_map> to_surface_id_to_layer_map( } } +// Helper to allow std::lower_bound with a int key only +inline bool + operator<(struct surface_id_to_layer const &a, int b) { + return a.id_max < b; +} + +optional<int> surface_id_to_layer_map::get_layer_for_surface(int surface_id) { + auto i = std::lower_bound(std::cbegin(this->mapping), + std::cend(this->mapping), surface_id); + + if (i != this->mapping.end()) { + // std::less only checks for surface_id_to_layer::id_max, so check + // that we are actually inside of an interval here. + if (i->id_min <= surface_id) { + return optional<int>(i->layer_id); + } + } + + return nullopt; +} + } // namespace wm diff --git a/src/layers.hpp b/src/layers.hpp index 7b35c63..9dd2036 100644 --- a/src/layers.hpp +++ b/src/layers.hpp @@ -5,8 +5,6 @@ #ifndef TMCAGLWM_LAYERS_H #define TMCAGLWM_LAYERS_H -#include <algorithm> -#include <experimental/optional> #include <json.hpp> #include <set> #include <string> @@ -28,27 +26,14 @@ struct surface_id_to_layer { } }; -inline bool operator<(struct surface_id_to_layer const &a, int b) { - return a.id_max < b; -} - +// Actually, we shouldn't need a struct here ... but let's just keep it at that for now, +// to contain its mapping type and the _single_ useful method. struct surface_id_to_layer_map { - typedef std::set<struct surface_id_to_layer> map_type; - - map_type mapping; + typedef std::set<struct surface_id_to_layer> surface_to_layer_map_type; - std::experimental::optional<int> get_layer_for_surface(int surface_id) { - auto i = std::lower_bound(std::cbegin(this->mapping), - std::cend(this->mapping), surface_id); + surface_to_layer_map_type mapping; - if (i != this->mapping.end()) { - if (i->id_min <= surface_id) { - return std::experimental::optional<int>(i->layer_id); - } - } - - return std::experimental::nullopt; - } + optional<int> get_layer_for_surface(int surface_id); }; struct result<struct surface_id_to_layer_map> to_surface_id_to_layer_map( |