summaryrefslogtreecommitdiff
path: root/include/mbgl/style/layer_properties.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/mbgl/style/layer_properties.hpp')
-rw-r--r--include/mbgl/style/layer_properties.hpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/include/mbgl/style/layer_properties.hpp b/include/mbgl/style/layer_properties.hpp
new file mode 100644
index 0000000000..89d599dfbc
--- /dev/null
+++ b/include/mbgl/style/layer_properties.hpp
@@ -0,0 +1,29 @@
+#pragma once
+#include <mbgl/style/layer_impl.hpp>
+
+namespace mbgl {
+
+namespace style {
+
+/**
+ * @brief An interface, wrapping evaluated layer properties.
+ *
+ * It is an abstract base class; concrete derived classes that hold the actual data are provided for each layer type.
+ */
+class LayerProperties {
+public:
+ virtual ~LayerProperties() = default;
+
+ Immutable<Layer::Impl> baseImpl;
+
+protected:
+ LayerProperties(Immutable<Layer::Impl> impl) : baseImpl(std::move(impl)) {}
+};
+
+template <class Derived>
+inline const auto& getEvaluated(const Immutable<LayerProperties>& properties) {
+ return static_cast<const Derived&>(*properties).evaluated;
+}
+
+} // namespace style
+} // namespace mbgl