summaryrefslogtreecommitdiff
path: root/include/mbgl/style/filter.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/mbgl/style/filter.hpp')
-rw-r--r--include/mbgl/style/filter.hpp20
1 files changed, 17 insertions, 3 deletions
diff --git a/include/mbgl/style/filter.hpp b/include/mbgl/style/filter.hpp
index ce4015bb69..c9dc9fb1ec 100644
--- a/include/mbgl/style/filter.hpp
+++ b/include/mbgl/style/filter.hpp
@@ -11,14 +11,18 @@
namespace mbgl {
namespace style {
-
+
class Filter {
public:
optional<std::shared_ptr<const expression::Expression>> expression;
-
+private:
+ optional<mbgl::Value> legacyFilter;
+public:
Filter() : expression() {}
- Filter(expression::ParseResult _expression) : expression(std::move(*_expression)) {
+ Filter(expression::ParseResult _expression, optional<mbgl::Value> _filter = {})
+ : expression(std::move(*_expression)),
+ legacyFilter(std::move(_filter)){
assert(!expression || *expression != nullptr);
}
@@ -35,6 +39,16 @@ public:
friend bool operator!=(const Filter& lhs, const Filter& rhs) {
return !(lhs == rhs);
}
+
+ mbgl::Value serialize() const {
+ if (legacyFilter) {
+ return *legacyFilter;
+ }
+ else if (expression) {
+ return (**expression).serialize();
+ }
+ return NullValue();
+ }
};
} // namespace style