diff options
author | Fabian Guerra Soto <fabian.guerra@mapbox.com> | 2018-03-26 12:53:34 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-26 12:53:34 -0400 |
commit | dd301fbc0f9f988b47ad7b6532249833b3aa848c (patch) | |
tree | fc485cc166704b121dfcb3168ae6f3c6a13cfec9 /platform/darwin/src/NSPredicate+MGLAdditions.mm | |
parent | ce3c42a1c237812aa01c0c6ea030a11223e77c1e (diff) | |
download | qtlocation-mapboxgl-dd301fbc0f9f988b47ad7b6532249833b3aa848c.tar.gz |
[ios, macos] Change the format for case expressions to a flat structure. (#11450)
* [ios, macos] Change the format for case expressions to a flat structure.
* [ios, macos] Add support for multiple branches case expression.
* [ios, macos] Add multiple branch tests to case expressions.
* [ios, macos] Case operator now has iOS 8 support.
Diffstat (limited to 'platform/darwin/src/NSPredicate+MGLAdditions.mm')
-rw-r--r-- | platform/darwin/src/NSPredicate+MGLAdditions.mm | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/platform/darwin/src/NSPredicate+MGLAdditions.mm b/platform/darwin/src/NSPredicate+MGLAdditions.mm index 63c8307803..2d5b646ff2 100644 --- a/platform/darwin/src/NSPredicate+MGLAdditions.mm +++ b/platform/darwin/src/NSPredicate+MGLAdditions.mm @@ -324,4 +324,29 @@ NSArray *MGLSubpredicatesWithJSONObjects(NSArray *objects) { return nil; } +- (id)mgl_case:(id)firstValue, ... { + + if ([self evaluateWithObject:nil]) { + return firstValue; + } + + id eachExpression; + va_list argumentList; + va_start(argumentList, firstValue); + + while ((eachExpression = va_arg(argumentList, id))) { + if ([eachExpression isKindOfClass:[NSComparisonPredicate class]]) { + id valueExpression = va_arg(argumentList, id); + if ([eachExpression evaluateWithObject:nil]) { + return valueExpression; + } + } else { + return eachExpression; + } + } + va_end(argumentList); + + return nil; +} + @end |