aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/third_party/Immutable/FSTArraySortedDictionary.h
blob: 0fd7b44d24cff76f9e59bed4143b577dbebdd93c (plain)
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
#import <Foundation/Foundation.h>

#import "Firestore/third_party/Immutable/FSTImmutableSortedDictionary.h"

NS_ASSUME_NONNULL_BEGIN

/**
 * FSTArraySortedDictionary is an array backed implementation of FSTImmutableSortedDictionary.
 *
 * You should not use this class directly. You should use FSTImmutableSortedDictionary.
 *
 * FSTArraySortedDictionary uses arrays and linear lookups to achieve good memory efficiency while
 * maintaining good performance for small collections. It also uses fewer allocations than a
 * comparable red black tree. To avoid degrading performance with increasing collection size it
 * will automatically convert to a FSTTreeSortedDictionary after an insert call above a certain
 * threshold.
 */
@interface FSTArraySortedDictionary <KeyType, ValueType> :
    FSTImmutableSortedDictionary<KeyType, ValueType>

+ (FSTArraySortedDictionary<KeyType, ValueType> *)
    dictionaryWithDictionary:(NSDictionary<KeyType, ValueType> *)dictionary
                  comparator:(NSComparator)comparator;

- (id)init __attribute__((unavailable("Use initWithComparator:keys:values: instead.")));

- (instancetype)initWithComparator:(NSComparator)comparator;

- (instancetype)initWithComparator:(NSComparator)comparator
                              keys:(NSArray<KeyType> *)keys
                            values:(NSArray<ValueType> *)values NS_DESIGNATED_INITIALIZER;

@end

NS_ASSUME_NONNULL_END