Enhanced C#
Language of your choice: library documentation
|
WList is the mutable variant of the VList data structure. More...
WList is the mutable variant of the VList data structure.
An article is available online about the VList data types.
See the remarks of VListBlock<T> for more information about VLists and WLists. It is most efficient to add items to the front of a FWList (at index 0) or the back of an WList (at index Count-1).
Properties | |
new T | this[int index] [get, set] |
T | this[int index, T defaultValue] [get] |
Gets an item from the list at the specified index; returns defaultValue if the index is not valid. More... | |
T | Last [get, set] |
Returns the last item of the list (at index Count-1). More... | |
bool | IsEmpty [get] |
Properties inherited from Loyc.Collections.WListBase< T > | |
T | this[int index] [get, set] |
new int | Count [get] |
bool | IsReadOnly [get] |
new int | BlockChainLength [get] |
Properties inherited from Loyc.Collections.WListProtected< T > | |
byte | UserByte [get, set] |
An additional byte that the derived class can optionally use. More... | |
int? | BlockChainLength [get] |
Gets the number of blocks used by this list. More... | |
Public Member Functions | |
WList (T itemZero, T itemOne) | |
WList (IEnumerable< T > list) | |
void | AddRange (IEnumerable< T > items) |
new void | AddRange (IEnumerator< T > items) |
void | AddRange (IReadOnlyList< T > list) |
void | InsertRange (int index, IReadOnlyList< T > list) |
void | RemoveRange (int index, int count) |
new void | Insert (int index, T item) |
new void | RemoveAt (int index) |
new VList< T >.Enumerator | GetEnumerator () |
FVList< T >.Enumerator | ReverseEnumerator () |
new T | TryGet (int index, out bool fail) |
WList< T > | Clone () |
WList< T > | Where (Func< T, bool > filter) |
Applies a filter to a list, to exclude zero or more items. More... | |
WList< T > | WhereSelect (Func< T, Maybe< T >> filter) |
Filters and maps a list with a user-defined function. More... | |
WList< T > | SmartSelect (Func< T, T > map) |
Maps a list to another list of the same length. More... | |
WList< T > | Transform (VListTransformer< T > x) |
Transforms a list (combines filtering with selection and more). More... | |
T | Pop () |
Removes the back item (at index Count-1) from the list and returns it. More... | |
VList< T > | WithoutLast (int numToRemove) |
FWList< T > | ToFWList () |
Returns this list as a FWList, which effectively reverses the order of the elements. More... | |
T[] | ToArray () |
Returns the WList converted to an array. More... | |
void | Resize (int newSize) |
Resizes the list to the specified size. More... | |
Public Member Functions inherited from Loyc.Collections.WListBase< T > | |
new void | Add (T item) |
new void | Clear () |
new void | Insert (int index, T item) |
new void | RemoveAt (int index) |
new int | IndexOf (T item) |
new bool | Contains (T item) |
new void | CopyTo (T[] array, int arrayIndex) |
Copies the elements of the collection to an Array, starting at a particular array index. More... | |
new bool | Remove (T item) |
IEnumerator< T > | GetEnumerator () |
T | TryGet (int index, out bool fail) |
Slice_< T > | Slice (int start, int count) |
void | Push (T item) |
Synonym for Add(); adds an item to the front of the list. More... | |
new FVList< T > | ToFVList () |
new VList< T > | ToVList () |
Public Member Functions inherited from Loyc.Collections.IListSource< T > | |
IRange< T > | Slice (int start, int count=int.MaxValue) |
Returns a sub-range of this list. More... | |
Public Member Functions inherited from Loyc.Collections.IContains< T > | |
bool | Contains (T item) |
Returns true if and only if the collection contains the specified item. More... | |
Static Public Member Functions | |
static | operator FWList< T > (WList< T > list) |
Returns this list as a FWList, which effectively reverses the order of the elements. More... | |
Static Public Member Functions inherited from Loyc.Collections.WListBase< T > | |
static | operator FVList< T > (WListBase< T > list) |
Returns this list as a FVList; if this is a WList, the order of the elements is reversed at the same time. More... | |
static | operator VList< T > (WListBase< T > list) |
Returns this list as a VList; if this is a FWList, the order of the elements is reversed at the same time. More... | |
Protected Member Functions | |
override int | AdjustWListIndex (int index, int size) |
This method implements the difference between FWList and WList: In FWList it returns index , but in WList it returns Count-size-index . More... | |
override IEnumerator< T > | GetIEnumerator () |
Protected Member Functions inherited from Loyc.Collections.WListProtected< T > | |
WListProtected (WListProtected< T > original, bool takeOwnership) | |
T | GetAt (int index) |
Gets an item from a FWList or WList at the specified index. More... | |
void | SetAt (int index, T value) |
Sets an item in a FWList or WList at the specified index. More... | |
void | Add (T item) |
Inserts an item at the "front" of the list, which is index 0 for FWList, or Count for WList. More... | |
void | Insert (int index, T item) |
void | RemoveAt (int index) |
int | IndexOf (T item) |
Searches for the specified object and returns the zero-based index of the first occurrence (lowest index) within the entire FVList. More... | |
bool | Contains (T item) |
void | CopyTo (T[] array, int arrayIndex) |
bool | Remove (T item) |
FVList< T >.Enumerator | GetVListEnumerator () |
VList< T >.Enumerator | GetRVListEnumerator () |
void | RemoveAtDff (int distanceFromFront) |
void | RemoveRangeBase (int distanceFromFront, int count) |
void | InsertRangeAtDff (int distanceFromFront, IReadOnlyList< T > items, bool isRWList) |
void | InsertAtDff (int distanceFromFront, T item) |
T | GetAtDff (int distanceFromFront) |
Gets an item WITHOUT doing a range check More... | |
void | SetAtDff (int distanceFromFront, T item) |
Sets an item WITHOUT doing a range or mutability check More... | |
FVList< T > | ToFVList () |
Returns this list as a FVList; if this is a WList, the order of the elements is reversed at the same time. More... | |
VList< T > | ToVList () |
Returns this list as a VList; if this is a FWList, the order of the elements is reversed at the same time. More... | |
|
inlineprotectedvirtual |
This method implements the difference between FWList and WList: In FWList it returns index
, but in WList it returns Count-size-index
.
index | Index to adjust |
size | Number of elements being accessed or removed |
Solely as an optimization, FWList and WList also have separate versions of this[], InsertAt and RemoveAt.
Reimplemented from Loyc.Collections.WListProtected< T >.
|
inlineexplicitstatic |
Returns this list as a FWList, which effectively reverses the order of the elements.
This operation marks the items of the list as immutable. You can modify either list afterward, but some or all of the list may have to be copied.
|
inline |
Removes the back item (at index Count-1) from the list and returns it.
|
inline |
Resizes the list to the specified size.
If the new size is larger than the old size, empty elements are added to the end. If the new size is smaller, elements are truncated from the end.
I decided not to offer a Resize() method for the FWList because the natural place to insert or remove items in a FWList is at the beginning. For a Resize() method to do so, I felt, would come as too much of a surprise to some programmers.
|
inline |
Maps a list to another list of the same length.
map | A function that transforms each item in the list. |
This method is called "Smart" because of what happens if the map doesn't do anything. If the map function returns the first N items unmodified (the items at the tail of the WList), those N items are typically not copied, but shared between the existing list and the new one.
|
inline |
Returns the WList converted to an array.
|
inline |
Returns this list as a FWList, which effectively reverses the order of the elements.
This operation marks the items of the list as immutable. You can modify either list afterward, but some or all of the list may have to be copied.
Referenced by Loyc.Collections.WList< Loyc.Syntax.LNode >.operator FWList< T >().
|
inline |
Transforms a list (combines filtering with selection and more).
x | Method to apply to each item in the list |
See the documentation of FVList.Transform() for more information.
Referenced by Loyc.Collections.WList< Loyc.Syntax.LNode >.WhereSelect().
|
inline |
Applies a filter to a list, to exclude zero or more items.
filter | A function that chooses which items to include (exclude items by returning false). |
If the predicate keeps the first N items it is passed (which are the last or "tail" items in a WList), those N items are typically not copied, but shared between the existing list and the new one.
|
inline |
Filters and maps a list with a user-defined function.
filter | A function that chooses which items to include in a new list, and what to change them to. |
This is a smart function. If the filter does not modify the first N items it is passed those N items are typically not copied, but shared between the existing list and the new one.
|
getset |
Returns the last item of the list (at index Count-1).
Referenced by Loyc.Collections.WList< Loyc.Syntax.LNode >.Pop().
|
get |
Gets an item from the list at the specified index; returns defaultValue if the index is not valid.