summaryrefslogtreecommitdiff
path: root/platform/darwin/src/NSComparisonPredicate+MGLAdditions.mm
diff options
context:
space:
mode:
authorFredrik Karlsson <bjorn.fredrik.karlsson@gmail.com>2016-08-17 13:38:02 +0200
committerFredrik Karlsson <bjorn.fredrik.karlsson@gmail.com>2016-09-02 22:42:05 +0200
commitd77a13eb7320722c48c8a18240adf99615c4b85f (patch)
tree1017781b310e434f943e4ad38b57f319ad7a3a58 /platform/darwin/src/NSComparisonPredicate+MGLAdditions.mm
parent6a39cf5aaece81c7a531b12321dd503004cc45b8 (diff)
downloadqtlocation-mapboxgl-d77a13eb7320722c48c8a18240adf99615c4b85f.tar.gz
[ios] Added support for filters (NSPredicate)
[ios, macos] cleaned up filters [ios] added a filter example [ios] utest filters [ios, macos] nested predicates [ios] refactored [ios] filter -> NSPredicate [ios] fixed mbgl::Any/AllFilter -> NSPredicate [ios] translate nested mbgl::NotIn filters [ios] cleanup and added more utests [ios] fixed a bug in the None filter conversion and improved utests [ios, macos] doc [macos] added missing category [ios, macos] additional utests [ios, macos] updated documentation
Diffstat (limited to 'platform/darwin/src/NSComparisonPredicate+MGLAdditions.mm')
-rw-r--r--platform/darwin/src/NSComparisonPredicate+MGLAdditions.mm67
1 files changed, 67 insertions, 0 deletions
diff --git a/platform/darwin/src/NSComparisonPredicate+MGLAdditions.mm b/platform/darwin/src/NSComparisonPredicate+MGLAdditions.mm
new file mode 100644
index 0000000000..ced6a1ac47
--- /dev/null
+++ b/platform/darwin/src/NSComparisonPredicate+MGLAdditions.mm
@@ -0,0 +1,67 @@
+#import "NSComparisonPredicate+MGLAdditions.h"
+
+#import "NSPredicate+MGLAdditions.h"
+#import "NSExpression+MGLAdditions.h"
+
+@implementation NSComparisonPredicate (MGLAdditions)
+
+- (mbgl::style::Filter)mgl_filter
+{
+ switch (self.predicateOperatorType) {
+ case NSEqualToPredicateOperatorType: {
+ auto filter = mbgl::style::EqualsFilter();
+ filter.key = self.leftExpression.keyPath.UTF8String;
+ filter.value = self.rightExpression.mgl_filterValue;
+ return filter;
+ }
+ case NSNotEqualToPredicateOperatorType: {
+ auto filter = mbgl::style::NotEqualsFilter();
+ filter.key = self.leftExpression.keyPath.UTF8String;
+ filter.value = self.rightExpression.mgl_filterValue;
+ return filter;
+ }
+ case NSGreaterThanPredicateOperatorType: {
+ auto filter = mbgl::style::GreaterThanFilter();
+ filter.key = self.leftExpression.keyPath.UTF8String;
+ filter.value = self.rightExpression.mgl_filterValue;
+ return filter;
+ }
+ case NSGreaterThanOrEqualToPredicateOperatorType: {
+ auto filter = mbgl::style::GreaterThanEqualsFilter();
+ filter.key = self.leftExpression.keyPath.UTF8String;
+ filter.value = self.rightExpression.mgl_filterValue;
+ return filter;
+ }
+ case NSLessThanPredicateOperatorType: {
+ auto filter = mbgl::style::LessThanFilter();
+ filter.key = self.leftExpression.keyPath.UTF8String;
+ filter.value = self.rightExpression.mgl_filterValue;
+ return filter;
+ }
+ case NSLessThanOrEqualToPredicateOperatorType: {
+ auto filter = mbgl::style::LessThanEqualsFilter();
+ filter.key = self.leftExpression.keyPath.UTF8String;
+ filter.value = self.rightExpression.mgl_filterValue;
+ return filter;
+ }
+ case NSInPredicateOperatorType: {
+ auto filter = mbgl::style::InFilter();
+ filter.key = self.leftExpression.keyPath.UTF8String;
+ filter.values = self.rightExpression.mgl_filterValues;
+ return filter;
+ }
+ case NSMatchesPredicateOperatorType:
+ case NSLikePredicateOperatorType:
+ case NSBeginsWithPredicateOperatorType:
+ case NSEndsWithPredicateOperatorType:
+ case NSCustomSelectorPredicateOperatorType:
+ case NSContainsPredicateOperatorType:
+ case NSBetweenPredicateOperatorType:
+ [NSException raise:@"Unsupported operator type"
+ format:@"NSPredicateOperatorType:%lu is not supported.", (unsigned long)self.predicateOperatorType];
+ }
+
+ return {};
+}
+
+@end