summaryrefslogtreecommitdiff
path: root/include/mbgl/style/property_value.hpp
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2016-04-26 16:39:56 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2016-06-02 14:51:39 -0700
commitc902f9098b331302aaa1baac77d1575db624a132 (patch)
tree211901cd04454aedbac40c469198438e46d7038c /include/mbgl/style/property_value.hpp
parent18149cbcc27a926f280b08d8d0e09104b2147688 (diff)
downloadqtlocation-mapboxgl-c902f9098b331302aaa1baac77d1575db624a132.tar.gz
[core] Rationalize naming for style-related code
Diffstat (limited to 'include/mbgl/style/property_value.hpp')
-rw-r--r--include/mbgl/style/property_value.hpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/include/mbgl/style/property_value.hpp b/include/mbgl/style/property_value.hpp
new file mode 100644
index 0000000000..d8f83a0fb3
--- /dev/null
+++ b/include/mbgl/style/property_value.hpp
@@ -0,0 +1,38 @@
+#pragma once
+
+#include <mbgl/util/variant.hpp>
+#include <mbgl/style/function.hpp>
+
+namespace mbgl {
+namespace style {
+
+class Undefined {};
+
+template <class T>
+class PropertyValue {
+private:
+ using Value = variant<Undefined, T, Function<T>>;
+ Value value;
+
+public:
+ PropertyValue() : value() {}
+ PropertyValue( T constant) : value(constant) {}
+ PropertyValue(Function<T> function) : value(function) {}
+
+ bool isUndefined() const { return value.which() == 0; }
+ bool isConstant() const { return value.which() == 1; }
+ bool isFunction() const { return value.which() == 2; }
+
+ const T & asConstant() const { return value.template get< T >(); }
+ const Function<T>& asFunction() const { return value.template get<Function<T>>(); }
+
+ explicit operator bool() const { return !isUndefined(); };
+
+ template <typename Visitor>
+ static auto visit(const PropertyValue<T>& value, Visitor&& visitor) {
+ return Value::visit(value.value, visitor);
+ }
+};
+
+} // namespace style
+} // namespace mbgl