summaryrefslogtreecommitdiff
path: root/platform/darwin/src/NSCompoundPredicate+MGLAdditions.mm
diff options
context:
space:
mode:
authorFabian Guerra Soto <fabian.guerra@mapbox.com>2018-04-16 16:51:59 -0400
committerGitHub <noreply@github.com>2018-04-16 16:51:59 -0400
commit62dd097328c1776cd62208baf6e46b1cd4154a52 (patch)
treef8b383ca94cade4af4a6ab5bb79113a8199fc1a7 /platform/darwin/src/NSCompoundPredicate+MGLAdditions.mm
parentfe4348eec34a3a9c23f7a0af2ccfa4eff28416ea (diff)
downloadqtlocation-mapboxgl-62dd097328c1776cd62208baf6e46b1cd4154a52.tar.gz
[ios, macos] NSPredicate expression filters. (#11587)
* [ios, macos] Add NSAndPredicateType predicate expression filter. * [ios, macos] Add type to NSPredicate expressions. * [ios, macos] Add Expression filter support. * [ios, macos] Update NSPredicate expression based tests. * [ios, macos] Refactor ExpressionFilters. * [ios, macos] Add symmetric test to ExpressionFilters. * [ios, macos] Update NSPredicate test to ExpressionFilters. * [ios, macos] Re-introduce Filter tests. * [ios, macos] Remove typed NSComparisonPredicate's comparable values. * [ios, macos] Update style layers predicate tests. * [ios, macos] Remove unused predicate conversion code. * [ios, macos] Update documentation exaple's test. * [ios, macos] Update Predicate and Expressions guide.. * [ios, macos] Remove mgl_ prefix from variable expressions. * [ios, macos] Update predicates and expressions documentation. * [ios, macos] Update changelogs.
Diffstat (limited to 'platform/darwin/src/NSCompoundPredicate+MGLAdditions.mm')
-rw-r--r--platform/darwin/src/NSCompoundPredicate+MGLAdditions.mm60
1 files changed, 4 insertions, 56 deletions
diff --git a/platform/darwin/src/NSCompoundPredicate+MGLAdditions.mm b/platform/darwin/src/NSCompoundPredicate+MGLAdditions.mm
index 19568b8033..5a98b763ea 100644
--- a/platform/darwin/src/NSCompoundPredicate+MGLAdditions.mm
+++ b/platform/darwin/src/NSCompoundPredicate+MGLAdditions.mm
@@ -1,8 +1,12 @@
#import "NSCompoundPredicate+MGLAdditions.h"
+#import "MGLStyleValue_Private.h"
+
#import "NSPredicate+MGLAdditions.h"
#import "NSExpression+MGLPrivateAdditions.h"
+#include <mbgl/style/conversion/property_value.hpp>
+
@implementation NSCompoundPredicate (MGLAdditions)
- (std::vector<mbgl::style::Filter>)mgl_subfilters
@@ -14,62 +18,6 @@
return filters;
}
-- (mbgl::style::Filter)mgl_filter
-{
- switch (self.compoundPredicateType) {
- case NSNotPredicateType: {
- NSAssert(self.subpredicates.count <= 1, @"NOT predicate cannot have multiple subpredicates.");
- NSPredicate *subpredicate = self.subpredicates.firstObject;
- mbgl::style::Filter subfilter = subpredicate.mgl_filter;
-
- // Convert NOT(!= nil) to NotHasFilter.
- if (subfilter.is<mbgl::style::HasFilter>()) {
- auto hasFilter = subfilter.get<mbgl::style::HasFilter>();
- return mbgl::style::NotHasFilter { .key = hasFilter.key };
- }
-
- // Convert NOT(== nil) to HasFilter.
- if (subfilter.is<mbgl::style::NotHasFilter>()) {
- auto hasFilter = subfilter.get<mbgl::style::NotHasFilter>();
- return mbgl::style::HasFilter { .key = hasFilter.key };
- }
-
- // Convert NOT(IN) or NOT(CONTAINS) to NotInFilter.
- if (subfilter.is<mbgl::style::InFilter>()) {
- auto inFilter = subfilter.get<mbgl::style::InFilter>();
- mbgl::style::NotInFilter notInFilter;
- notInFilter.key = inFilter.key;
- notInFilter.values = inFilter.values;
- return notInFilter;
- }
-
- // Convert NOT(), NOT(AND), NOT(NOT), NOT(==), etc. into NoneFilter.
- mbgl::style::NoneFilter noneFilter;
- if (subfilter.is<mbgl::style::AnyFilter>()) {
- // Flatten NOT(OR).
- noneFilter.filters = subfilter.get<mbgl::style::AnyFilter>().filters;
- } else if (subpredicate) {
- noneFilter.filters = { subfilter };
- }
- return noneFilter;
- }
- case NSAndPredicateType: {
- mbgl::style::AllFilter filter;
- filter.filters = self.mgl_subfilters;
- return filter;
- }
- case NSOrPredicateType: {
- mbgl::style::AnyFilter filter;
- filter.filters = self.mgl_subfilters;
- return filter;
- }
- }
-
- [NSException raise:@"Compound predicate type not handled"
- format:@""];
- return {};
-}
-
@end
@implementation NSCompoundPredicate (MGLExpressionAdditions)