A sparse A-List that implements ISparseList{T}.
An article about this class is available.
The sparse A-List is implemented similarly to a normal A-List; the main difference is that leaf nodes have a list of (int, T) pairs rather than a list of T values. The integers represent the relative index of each T value, as an offset from the beginning of the node. This allows an arbitrary amount of empty space to exist between each T value in the list, making it sparse.
SparseAList is a precise sparse list, meaning that you can rely on it to keep track of which indexes are "set" and which are "empty" (the IsSet method tells you which).
TODO: Add support for A-List tree observers (IAListTreeObserver(K,T))
|
|
| SparseAList (IEnumerable< T > items) |
| |
|
| SparseAList (IListSource< T > items) |
| |
|
| SparseAList (ISparseListSource< T > items) |
| |
|
| SparseAList (int maxLeafSize) |
| |
|
| SparseAList (int maxLeafSize, int maxInnerSize) |
| |
|
| SparseAList (SparseAList< T > items, bool keepListChangingHandlers) |
| |
|
sealed override void | Add (T item) |
| |
|
void | AddRange (IEnumerable< T > list) |
| |
|
sealed override void | Insert (int index, T item) |
| |
|
void | InsertRange (int index, SparseAList< T > source) |
| |
|
void | InsertRange (int index, SparseAList< T > source, bool move) |
| |
|
sealed override void | InsertRange (int index, IEnumerable< T > list) |
| |
|
sealed override void | InsertRange (int index, IListSource< T > list) |
| |
| void | InsertRange (int index, ISparseListSource< T > list) |
| | Inserts another sparse list into this one. More...
|
| |
|
new SparseAList< T > | Clone () |
| |
|
SparseAList< T > | Clone (bool keepListChangingHandlers) |
| |
|
SparseAList< T > | CopySection (int start, int subcount) |
| |
|
new SparseAList< T > | RemoveSection (int start, int count) |
| |
| void | Swap (SparseAList< T > other) |
| | Swaps the contents of two SparseAList{T}s in O(1) time. More...
|
| |
|
virtual void | Append (SparseAList< T > other) |
| |
|
virtual void | Append (SparseAList< T > other, bool move) |
| |
| virtual void | Prepend (SparseAList< T > other) |
| | Prepends an AList to this list in sublinear time. More...
|
| |
| virtual void | Prepend (SparseAList< T > other, bool move) |
| | Prepends an AList to this list in sublinear time. More...
|
| |
|
sealed override bool | TrySet (int index, T value) |
| |
| void | ClearSpace (int index, int count=1) |
| | Unsets the range of indices index to index+count-1 inclusive. If index + count > Count, the sparse list shall enlarge Count to be equal to index + count. More...
|
| |
| void | InsertSpace (int index, int count=1) |
| | Inserts empty space starting at the specified index. More...
|
| |
| bool | IsSet (int index) |
| | Determines whether a value exists at the specified index. More...
|
| |
| T | NextHigherItem (ref int?index) |
| | Increases index by at least one to reach the next index that is not classified as empty space, and returns the item at that index. More...
|
| |
| T | NextLowerItem (ref int?index) |
| | Decreases index by at least one to reach the next index that is not classified as empty space, and returns the item at that index. More...
|
| |
| override int | IndexOf (T item) |
| | Finds an index of an item in the list. More...
|
| |
|
int | GetRealImmutableCount () |
| |
|
int | GetRealItemCount () |
| |
|
| AListBase (int maxLeafSize) |
| |
|
| AListBase (int maxLeafSize, int maxInnerSize) |
| |
|
| AListBase (AListBase< T > items, bool keepListChangingHandlers) |
| |
|
void | AddRange (IListSource< T > source) |
| |
|
void | AddRange (AList< T > source) |
| |
|
void | Resize (int newSize) |
| |
| bool | Contains (T item) |
| | Returns true if-and-only-if the specified item exists in the list. More...
|
| |
| bool | Remove (T item) |
| | Finds a specific item and removes it. If duplicates of the item exist, only the first occurrence is removed. More...
|
| |
|
AListBase< T > | Clone () |
| |
|
AListBase< T > | RemoveSection (int start, int count) |
| |
| new ListSlice< T > | Slice (int start, int length) |
| | Returns a sub-range of this list. More...
|
| |
|
void | RemoveAt (int index) |
| |
|
void | RemoveRange (int index, int amount) |
| |
| int | RemoveAll (Predicate< T > match) |
| | Removes all the elements that match the conditions defined by the specified predicate. More...
|
| |
|
virtual void | Clear () |
| |
| IEnumerable< int > | IndexesOf (T item) |
| | Returns a sequence of integers that represent the locations where a given item appears in the list. More...
|
| |
|
virtual IEnumerable< int > | IndexesOf (T item, int minIndex, int maxIndex) |
| |
| int | LinearScanFor (T item, int startIndex, EqualityComparer< T > comparer) |
| | Scans the list starting at startIndex and going upward, and returns the index of an item that matches the first argument. More...
|
| |
|
void | CopyTo (T[] array, int arrayIndex) |
| |
|
Enumerator | GetEnumerator () |
| |
|
Enumerator | GetEnumerator (int startIndex) |
| |
|
Enumerator | GetEnumerator (int start, int subcount) |
| |
|
Enumerator | GetEnumerator (int start, int subcount, bool startAtEnd) |
| |
| T | TryGet (int index, out bool fail) |
| | Gets the item at the specified index, and does not throw an exception on failure. More...
|
| |
| virtual void | Freeze () |
| | Prevents further changes to the list. More...
|
| |
| Slice_< T > | Slice (int start, int length) |
| | Returns a sub-range of this list. More...
|
| |
| int | GetImmutableCount () |
| | Diagnostic method. Returns the number of elements of the list that are located in immutable nodes, which will be copied if modified. Used by the test suite. More...
|
| |
| virtual bool | AddObserver (IAListTreeObserver< K, T > observer) |
| | Attaches a tree observer to this object. More...
|
| |
| virtual bool | RemoveObserver (IAListTreeObserver< K, T > observer) |
| | Removes a previously attached tree observer from this list. More...
|
| |
| int | RemoveAll (Predicate< T > match) |
| | Removes the all the elements that match the conditions defined by the specified predicate. More...
|
| |
|
void | Clear () |
| |
|
bool | Remove (T item) |
| |
|
void | RemoveRange (int index, int amount) |
| |
|
|
| SparseAList (AListBase< int, T > original, AListNode< int, T > section) |
| |
|
override AListNode< int, T > | NewRootLeaf () |
| |
|
override void | Clone (out AListBase< T > clone) |
| |
|
override AListBase< T > | cov_RemoveSection (int start, int count) |
| |
|
| AListBase (AListBase< int, T > original, AListNode< int, T > section) |
| |
|
override AListInnerBase< int, T > | SplitRoot (AListNode< int, T > left, AListNode< int, T > right) |
| |
| void | DetectSizeOverflow (int insertSize) |
| | Throws OverflowException if inserting the specified number of items would cause Count to overflow. More...
|
| |
|
void | BeginInsertRange (int index, IListSource< T > items, int itemsCount) |
| |
|
void | DoneInsertRange (int amountInserted) |
| |
|
void | InsertRange (int index, AListBase< T > source, bool move) |
| |
|
virtual void | Combine (AListBase< T > other, bool move, bool append) |
| |
|
| AListBase (int maxLeafSize) |
| |
|
| AListBase (int maxLeafSize, int maxInnerSize) |
| |
| | AListBase (AListBase< K, T > items, bool keepListChangingHandlers) |
| | Cloning constructor. Does not duplicate the observer (IAListTreeObserver{K,T}), if any, because it may not be cloneable. More...
|
| |
| | AListBase (AListBase< K, T > original, AListNode< K, T > section) |
| | This is the constructor that CopySection(), which can be defined by derived classes, should call to create a sublist of a list. Used in conjunction with CopySectionHelper(). More...
|
| |
|
abstract AListInnerBase< K, T > | SplitRoot (AListNode< K, T > left, AListNode< K, T > right) |
| |
|
virtual Enumerator | NewEnumerator (uint start, uint firstIndex, uint lastIndex) |
| |
|
void | CheckPoint () |
| |
|
void | AutoThrow () |
| |
|
void | AutoCreateOrCloneRoot () |
| |
|
void | AutoSplit (AListNode< K, T > splitLeft, AListNode< K, T > splitRight) |
| |
|
void | HandleChangedOrUndersizedRoot (AListNode< K, T > result) |
| |
| virtual void | ClearInternal (bool forceClear) |
| | Clears the tree. More...
|
| |
| AListNode< K, T > | CopySectionHelper (int start, int subcount) |
| | Together with the AListBase{K,T}.AListBase(AListBase{K,T},AListNode{K,T}) constructor, this method helps implement the CopySection() method in derived classes, by cloning a section of the tree. More...
|
| |
|
AListNode< K, T > | CopySectionHelper (uint start, uint subcount) |
| |
| void | SwapHelper (AListBase< K, T > other, bool swapObservers) |
| | Swaps two ALists. More...
|
| |