diff options
Diffstat (limited to 'include/mbgl/style/filter.hpp')
-rw-r--r-- | include/mbgl/style/filter.hpp | 20 |
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 |