aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/third_party/Immutable/FSTImmutableSortedSet.h
diff options
context:
space:
mode:
Diffstat (limited to 'Firestore/third_party/Immutable/FSTImmutableSortedSet.h')
-rw-r--r--Firestore/third_party/Immutable/FSTImmutableSortedSet.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/Firestore/third_party/Immutable/FSTImmutableSortedSet.h b/Firestore/third_party/Immutable/FSTImmutableSortedSet.h
new file mode 100644
index 0000000..d0f9906
--- /dev/null
+++ b/Firestore/third_party/Immutable/FSTImmutableSortedSet.h
@@ -0,0 +1,47 @@
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ * FSTImmutableSortedSet is a set. It is immutable, but has methods to create new sets that are
+ * mutations of it, in an efficient way.
+ */
+@interface FSTImmutableSortedSet <KeyType> : NSObject
+
++ (FSTImmutableSortedSet<KeyType> *)setWithComparator:(NSComparator)comparator;
+
++ (FSTImmutableSortedSet<KeyType> *)setWithKeysFromDictionary:(NSDictionary<KeyType, id> *)array
+ comparator:(NSComparator)comparator;
+
+- (BOOL)containsObject:(KeyType)object;
+
+- (FSTImmutableSortedSet<KeyType> *)setByAddingObject:(KeyType)object;
+- (FSTImmutableSortedSet<KeyType> *)setByRemovingObject:(KeyType)object;
+
+- (KeyType)firstObject;
+- (KeyType)lastObject;
+- (NSUInteger)count;
+- (BOOL)isEmpty;
+
+- (KeyType)predecessorObject:(KeyType)entry;
+
+/**
+ * Returns the index of the object or NSNotFound if the object is not found.
+ *
+ * @param object The object to return the index for.
+ * @return The index of the object, or NSNotFound if not found.
+ */
+- (NSUInteger)indexOfObject:(KeyType)object;
+
+- (void)enumerateObjectsUsingBlock:(void (^)(KeyType obj, BOOL *stop))block;
+- (void)enumerateObjectsFrom:(KeyType)start
+ to:(_Nullable KeyType)end
+ usingBlock:(void (^)(KeyType obj, BOOL *stop))block;
+- (void)enumerateObjectsReverse:(BOOL)reverse usingBlock:(void (^)(KeyType obj, BOOL *stop))block;
+
+- (NSEnumerator<KeyType> *)objectEnumerator;
+- (NSEnumerator<KeyType> *)objectEnumeratorFrom:(KeyType)startKey;
+
+@end
+
+NS_ASSUME_NONNULL_END