FSTArraySortedDictionaryEnumerator.m 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #import "Firestore/third_party/Immutable/FSTArraySortedDictionaryEnumerator.h"
  2. NS_ASSUME_NONNULL_BEGIN
  3. // clang-format off
  4. // For some reason, clang-format messes this line up...
  5. @interface FSTArraySortedDictionaryEnumerator<KeyType, ValueType> ()
  6. @property(nonatomic, assign) int pos;
  7. @property(nonatomic, assign) int start;
  8. @property(nonatomic, assign) int end;
  9. @property(nonatomic, assign) BOOL reverse;
  10. @property(nonatomic, strong) NSArray<KeyType> *keys;
  11. @end
  12. // clang-format on
  13. @implementation FSTArraySortedDictionaryEnumerator
  14. - (id)initWithKeys:(NSArray *)keys startPos:(int)start endPos:(int)end isReverse:(BOOL)reverse {
  15. self = [super init];
  16. if (self != nil) {
  17. _keys = keys;
  18. _start = start;
  19. _end = end;
  20. _pos = start;
  21. _reverse = reverse;
  22. }
  23. return self;
  24. }
  25. - (nullable id)nextObject {
  26. if (self.pos < 0 || self.pos >= self.keys.count) {
  27. return nil;
  28. }
  29. if (self.reverse) {
  30. if (self.pos <= self.end) {
  31. return nil;
  32. }
  33. } else {
  34. if (self.pos >= self.end) {
  35. return nil;
  36. }
  37. }
  38. int pos = self.pos;
  39. if (self.reverse) {
  40. self.pos--;
  41. } else {
  42. self.pos++;
  43. }
  44. return self.keys[pos];
  45. }
  46. @end
  47. NS_ASSUME_NONNULL_END