diff options
author | Gil <mcg@google.com> | 2017-10-03 08:55:22 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-03 08:55:22 -0700 |
commit | bde743ed25166a0b320ae157bfb1d68064f531c9 (patch) | |
tree | 4dd7525d9df32fa5dbdb721d4b0d4f9b87f5e884 /Firestore/third_party/Immutable/FSTArraySortedDictionaryEnumerator.m | |
parent | bf550507ffa8beee149383a5bf1e2363bccefbb4 (diff) |
Release 4.3.0 (#327)
Initial release of Firestore at 0.8.0
Bump FirebaseCommunity to 0.1.3
Diffstat (limited to 'Firestore/third_party/Immutable/FSTArraySortedDictionaryEnumerator.m')
-rw-r--r-- | Firestore/third_party/Immutable/FSTArraySortedDictionaryEnumerator.m | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Firestore/third_party/Immutable/FSTArraySortedDictionaryEnumerator.m b/Firestore/third_party/Immutable/FSTArraySortedDictionaryEnumerator.m new file mode 100644 index 0000000..e8fdfcc --- /dev/null +++ b/Firestore/third_party/Immutable/FSTArraySortedDictionaryEnumerator.m @@ -0,0 +1,54 @@ +#import "FSTArraySortedDictionaryEnumerator.h" + +NS_ASSUME_NONNULL_BEGIN + +// clang-format off +// For some reason, clang-format messes this line up... +@interface FSTArraySortedDictionaryEnumerator<KeyType, ValueType> () +@property(nonatomic, assign) int pos; +@property(nonatomic, assign) int start; +@property(nonatomic, assign) int end; +@property(nonatomic, assign) BOOL reverse; +@property(nonatomic, strong) NSArray<KeyType> *keys; +@end +// clang-format on + +@implementation FSTArraySortedDictionaryEnumerator + +- (id)initWithKeys:(NSArray *)keys startPos:(int)start endPos:(int)end isReverse:(BOOL)reverse { + self = [super init]; + if (self != nil) { + _keys = keys; + _start = start; + _end = end; + _pos = start; + _reverse = reverse; + } + return self; +} + +- (nullable id)nextObject { + if (self.pos < 0 || self.pos >= self.keys.count) { + return nil; + } + if (self.reverse) { + if (self.pos <= self.end) { + return nil; + } + } else { + if (self.pos >= self.end) { + return nil; + } + } + int pos = self.pos; + if (self.reverse) { + self.pos--; + } else { + self.pos++; + } + return self.keys[pos]; +} + +@end + +NS_ASSUME_NONNULL_END |