+// 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;
+}
+