Enhanced C#
Loyc library documentation
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties Events Pages
Public fields | Properties | Public Member Functions | Static Public Member Functions | List of all members
Loyc.Collections.WListBase< T > Class Template Reference

Shared base class of FWList and WList. More...


Source file:
Inheritance diagram for Loyc.Collections.WListBase< T >:
Loyc.Collections.WListProtected< T > Loyc.Collections.IListAndListSource< T > Loyc.Collections.IListAndReadOnly< T > Loyc.Collections.IListSource< out T > Loyc.Collections.ICollectionAndSource< T > Loyc.Collections.ICollectionAndReadOnly< T > Loyc.Collections.ICollectionSource< T > Loyc.Collections.IIndexed< in K, out V > Loyc.Collections.ITryGet< in K, out V > Loyc.Collections.ISource< out T > Loyc.Collections.ICollectionAndReadOnly< T > Loyc.Collections.FWList< T > Loyc.Collections.WList< T >

Remarks

Shared base class of FWList and WList.

Template Parameters
TThe type of elements in the list

Public fields

bool IsEmpty => base.Count == 0
 

Properties

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...
 
- Properties inherited from Loyc.Collections.ISource< out T >
new int Count [get]
 Gets the number of items in the collection. More...
 
- Properties inherited from Loyc.Collections.ICount
int Count [get]
 Gets the number of items in the collection. More...
 
- Properties inherited from Loyc.Collections.IIsEmpty
bool IsEmpty [get]
 
- Properties inherited from Loyc.Collections.IIndexed< in K, out V >
this[K key] [get]
 Gets the value associated with the specified key. More...
 

Public Member Functions

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)
 Returns true if and only if the collection contains the specified item. More...
 
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 ()
 
TryGet (int index, out bool fail)
 
Slice_< T > Slice (int start, int count)
 Returns a sub-range of this list. More...
 
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.ITryGet< in K, out V >
TryGet (K key, out bool fail)
 Gets the item for the specified key or index, and does not throw an exception on failure. More...
 

Static Public Member Functions

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...
 

Additional Inherited Members

- Protected Member Functions inherited from Loyc.Collections.WListProtected< T >
virtual 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...
 
 WListProtected (WListProtected< T > original, bool takeOwnership)
 
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)
 
virtual IEnumerator< T > GetIEnumerator ()
 
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)
 
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...
 

Member Function Documentation

new bool Loyc.Collections.WListBase< T >.Contains ( item)
inline

Returns true if and only if the collection contains the specified item.

Parameters
itemData/object whose presence you want to check for. The collection decides how to test for equality, but it's most common to use EqualityComparer{T}.Default.

Implements Loyc.Collections.IContains< in T >.

new void Loyc.Collections.WListBase< T >.CopyTo ( T[]  array,
int  arrayIndex 
)
inline

Copies the elements of the collection to an Array, starting at a particular array index.

It's usually more convenient to call the ToArray() extension method, which calls this method for you.

This method exists for performance reasons (the collection itself can often copy data out faster than an enumerator can).

Exceptions
ArgumentNullExceptionarray is null.
ArgumentOutOfRangeExceptionarrayIndex is negative.
ArgumentExceptionThe number of elements in the source collection is greater than the available space from arrayIndex to the end of the destination array.

Implements Loyc.Collections.ICollectionSource< T >.

static Loyc.Collections.WListBase< T >.operator FVList< T > ( WListBase< T >  list)
inlineexplicitstatic

Returns this list as a FVList; if this is a WList, the order of the elements is reversed at the same time.

This operation marks the items of the FWList or WList as immutable. You can still modify the list afterward, but some or all of the list may have to be copied.

static Loyc.Collections.WListBase< T >.operator VList< T > ( WListBase< T >  list)
inlineexplicitstatic

Returns this list as a VList; if this is a FWList, the order of the elements is reversed at the same time.

This operation marks the items of the FWList or WList as immutable. You can still modify the list afterward, but some or all of the list may have to be copied.

void Loyc.Collections.WListBase< T >.Push ( item)
inline

Synonym for Add(); adds an item to the front of the list.

References Loyc.Collections.Add.

Slice_<T> Loyc.Collections.WListBase< T >.Slice ( int  start,
int  count 
)
inline

Returns a sub-range of this list.

Parameters
startThe new range will start at this index in the current list (this location will be index [0] in the new range).
countThe desired number of elements in the new range, or int.MaxValue to get all elements until the end of the list.
Returns
Returns a sub-range of this range.
Exceptions
ArgumentExceptionThe start index was below zero.

The (start, count) range is allowed to be invalid, as long as start is zero or above.

  • If count is below zero, or if start is above the original Count, the Count of the new slice is set to zero.
  • if (start + count) is above the original Count, the Count of the new slice is reduced to this.Count - start. Implementation note: do not compute (start + count) because it may overflow. Instead, test whether (count > this.Count - start).

Most collections should use the following implementation:

IListSource<T> IListSource<T>.Slice(int start, int count) { return Slice(start, count); }
public Slice_<T> Slice(int start, int count) { return new Slice_<T>(this, start, count); }

Implements Loyc.Collections.IListSource< out T >.