summaryrefslogtreecommitdiff
path: root/src/mbgl/map/map_data.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/map/map_data.cpp')
-rw-r--r--src/mbgl/map/map_data.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/mbgl/map/map_data.cpp b/src/mbgl/map/map_data.cpp
new file mode 100644
index 0000000000..23bc094990
--- /dev/null
+++ b/src/mbgl/map/map_data.cpp
@@ -0,0 +1,44 @@
+#include "map_data.hpp"
+
+#include <algorithm>
+
+namespace mbgl {
+
+// Adds the class if it's not yet set. Returns true when it added the class, and false when it
+// was already present.
+bool MapData::addClass(const std::string& klass) {
+ Lock lock(mtx);
+ if (std::find(classes.begin(), classes.end(), klass) != classes.end()) return false;
+ classes.push_back(klass);
+ return true;
+}
+
+// Removes the class if it's present. Returns true when it remvoed the class, and false when it
+// was not present.
+bool MapData::removeClass(const std::string& klass) {
+ Lock lock(mtx);
+ const auto it = std::find(classes.begin(), classes.end(), klass);
+ if (it != classes.end()) {
+ classes.erase(it);
+ return true;
+ }
+ return false;
+}
+
+// Returns true when class is present in the list of currently set classes.
+bool MapData::hasClass(const std::string& klass) const {
+ Lock lock(mtx);
+ return std::find(classes.begin(), classes.end(), klass) != classes.end();
+}
+
+void MapData::setClasses(const std::vector<std::string>& klasses) {
+ Lock lock(mtx);
+ classes = klasses;
+}
+
+std::vector<std::string> MapData::getClasses() const {
+ Lock lock(mtx);
+ return classes;
+}
+
+} \ No newline at end of file