-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathFLazyArray.h
47 lines (37 loc) · 2.06 KB
/
FLazyArray.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#import <Foundation/Foundation.h>
// Cannot return nil.
typedef void (^FLazyArrayResolver)(NSIndexSet *aIndexes, __strong id *aoObjects);
// Warning: In no way thread safe. (Nor are any derived collections)
@interface FLazyArray : NSArray
@property(nonatomic, readonly, copy) NSIndexSet *resolvedIndexes;
@property(nonatomic) NSUInteger batchSize;
+ (instancetype)lazyArrayWithCount:(NSUInteger)aCount resolver:(FLazyArrayResolver)aResolver;
- (NSArray *)objectsInRange:(NSRange)aRange;
// Require an object to be resolved again
- (void)forgetObjectAtIndex:(NSUInteger)aIdx;
- (void)forgetObjectsAtIndexes:(NSIndexSet *)aIndexes;
- (void)forgetObjectsInRange:(NSRange)aRange;
- (void)forgetAllObjects;
@end
@interface FMutableLazyArray : FLazyArray
// Tell the array that the underlying datasource has inserted/deleted an item
- (void)insertObjectAtIndex:(NSUInteger)aIdx;
- (void)removeObjectAtIndex:(NSUInteger)aIdx;
- (void)removeObjectsAtAtIndexes:(NSIndexSet *)aIndexes;
@end
#define FLazyArrayUnavailable __attribute__((unavailable))
@interface FLazyArray (UnavailableMethods)
+ (instancetype)array FLazyArrayUnavailable;
+ (instancetype)arrayWithObject:(id)anObject FLazyArrayUnavailable;
+ (instancetype)arrayWithObjects:(const id [])objects count:(NSUInteger)cnt FLazyArrayUnavailable;
+ (instancetype)arrayWithObjects:(id)firstObj, ... NS_REQUIRES_NIL_TERMINATION FLazyArrayUnavailable;
+ (instancetype)arrayWithArray:(NSArray *)array FLazyArrayUnavailable;
- (instancetype)initWithObjects:(const id [])objects count:(NSUInteger)cnt FLazyArrayUnavailable;
- (instancetype)initWithObjects:(id)firstObj, ... NS_REQUIRES_NIL_TERMINATION FLazyArrayUnavailable;
- (instancetype)initWithArray:(NSArray *)array FLazyArrayUnavailable;
- (instancetype)initWithArray:(NSArray *)array copyItems:(BOOL)flag FLazyArrayUnavailable;
+ (id)arrayWithContentsOfFile:(NSString *)path FLazyArrayUnavailable;
+ (id)arrayWithContentsOfURL:(NSURL *)url FLazyArrayUnavailable;
- (id)initWithContentsOfFile:(NSString *)path FLazyArrayUnavailable;
- (id)initWithContentsOfURL:(NSURL *)url FLazyArrayUnavailable;
@end