summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLucas Wojciechowski <lucas@mapbox.com>2018-02-09 10:10:23 -0800
committerLucas Wojciechowski <lucas@mapbox.com>2018-03-07 11:46:16 -0800
commit68b25f217dc02732bce0c440ab7e09cfb3629bbb (patch)
treef7dfb866d56683cdbcded2833bc4731c3aad22c4
parent268a4d7404d30dc4f866711e3fd1e778892bbe35 (diff)
downloadqtlocation-mapboxgl-68b25f217dc02732bce0c440ab7e09cfb3629bbb.tar.gz
WIP
-rw-r--r--include/mbgl/style/filter.hpp13
-rw-r--r--include/mbgl/style/filter_evaluator.hpp4
-rw-r--r--platform/darwin/src/NSPredicate+MGLAdditions.mm4
-rw-r--r--src/mbgl/style/conversion/stringify.hpp4
4 files changed, 24 insertions, 1 deletions
diff --git a/include/mbgl/style/filter.hpp b/include/mbgl/style/filter.hpp
index a204a2b17a..31fef05a4a 100644
--- a/include/mbgl/style/filter.hpp
+++ b/include/mbgl/style/filter.hpp
@@ -3,6 +3,7 @@
#include <mbgl/util/variant.hpp>
#include <mbgl/util/feature.hpp>
#include <mbgl/util/geometry.hpp>
+#include <mbgl/style/expression/expression.hpp>
#include <string>
#include <vector>
@@ -232,6 +233,15 @@ public:
return true;
}
};
+
+class ExpressionFilter {
+public:
+ std::shared_ptr<mbgl::style::expression::Expression> expression;
+
+ friend bool operator==(const ExpressionFilter& lhs, const ExpressionFilter& rhs) {
+ return lhs.expression == rhs.expression;
+ }
+};
using FilterBase = variant<
@@ -258,7 +268,8 @@ using FilterBase = variant<
class IdentifierInFilter,
class IdentifierNotInFilter,
class HasIdentifierFilter,
- class NotHasIdentifierFilter>;
+ class NotHasIdentifierFilter,
+ class ExpressionFilter>;
class Filter : public FilterBase {
public:
diff --git a/include/mbgl/style/filter_evaluator.hpp b/include/mbgl/style/filter_evaluator.hpp
index 66223d7282..bd63caa0a0 100644
--- a/include/mbgl/style/filter_evaluator.hpp
+++ b/include/mbgl/style/filter_evaluator.hpp
@@ -180,6 +180,10 @@ public:
bool operator()(const NotHasIdentifierFilter&) const {
return !featureIdentifier;
}
+
+ bool operator()(const ExpressionFilter&) const {
+ return false;
+ }
private:
template <class Op>
diff --git a/platform/darwin/src/NSPredicate+MGLAdditions.mm b/platform/darwin/src/NSPredicate+MGLAdditions.mm
index 3ffe200d01..1a643d41d0 100644
--- a/platform/darwin/src/NSPredicate+MGLAdditions.mm
+++ b/platform/darwin/src/NSPredicate+MGLAdditions.mm
@@ -194,6 +194,10 @@ public:
NSPredicate *operator()(mbgl::style::NotHasIdentifierFilter filter) {
return [NSPredicate predicateWithFormat:@"%K == nil", @"$id"];
}
+
+ NSPredicate *operator()(mbgl::style::ExpressionFilter filter) {
+ return nil;
+ }
};
@implementation NSPredicate (MGLAdditions)
diff --git a/src/mbgl/style/conversion/stringify.hpp b/src/mbgl/style/conversion/stringify.hpp
index 6ae6fede42..fd1af4ba0c 100644
--- a/src/mbgl/style/conversion/stringify.hpp
+++ b/src/mbgl/style/conversion/stringify.hpp
@@ -225,6 +225,10 @@ public:
void operator()(const NotHasIdentifierFilter&) {
stringifyUnaryFilter("!has", "$id");
}
+
+ void operator()(const ExpressionFilter&) {
+ stringifyUnaryFilter("herp", "derp");
+ }
private:
template <class F>