|
Enhanced C#
Loyc library documentation
|
Adapter: Provides access to a section of an array. More...
Adapter: Provides access to a section of an array.
As of version 30.1, this is a wrapper around Memory{T}.
Public fields | |
| Memory< T > | _mem |
| int | Count => _mem.Length |
| bool | IsEmpty => _mem.Length == 0 |
|
ArraySlice< T > IValue < ArraySlice< T > >. | Value => this |
Properties | |
| T | First [get, set] |
| T | Last [get, set] |
| T | this[int index] [get, set] |
| T | this[int index, T defaultValue] [get] |
| T[] | InternalList [get] |
| Returns the original array. More... | |
| int | InternalStart [get] |
| int | InternalStop [get] |
|
ArraySlice< T > IMValue < ArraySlice< T > >. | Value [get, set] |
Properties inherited from Loyc.Collections.IMRange< T > | |
| new T | this[int index] [get, set] |
Properties inherited from Loyc.Collections.IMBRange< T > | |
| new T | Last [get, set] |
| Gets or sets the value of the last item in the range. More... | |
Properties inherited from Loyc.Collections.IHasFirst< out T > | |
| T | First [get] |
| Gets the first item in the deque. More... | |
Properties inherited from Loyc.Collections.IIsEmpty | |
| bool | IsEmpty [get] |
Properties inherited from Loyc.Collections.IHasLast< out T > | |
| T | Last [get] |
| Gets the first item in the collection. More... | |
Properties inherited from Loyc.Collections.IHasMFirst< T > | |
| new T | First [get, set] |
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.IIndexed< in K, out V > | |
| V | this[K key] [get] |
| Gets the value associated with the specified key. More... | |
Properties inherited from Loyc.IMValue< T > | |
| new T | Value [get, set] |
Properties inherited from Loyc.IValue< out T > | |
| T | Value [get] |
Public Member Functions | |
| ArraySlice (T[] list, int start, int count) | |
| Initializes an array slice. More... | |
| ArraySlice (T[] list) | |
| ArraySlice (Memory< T > mem) | |
| T | PopFirst (out bool empty) |
| Removes the first item from the range and returns it. More... | |
| T | PopLast (out bool empty) |
| Removes the last item from the range and returns it. More... | |
|
IFRange< T > ICloneable < IFRange< T > >. | Clone () |
|
IBRange< T > ICloneable < IBRange< T > >. | Clone () |
|
IRange< T > ICloneable< IRange < T > >. | Clone () |
|
ArraySlice< T > ICloneable < ArraySlice< T > >. | Clone () |
| IEnumerator< T > IEnumerable< T >. | GetEnumerator () |
|
System.Collections.IEnumerator System.Collections.IEnumerable. | GetEnumerator () |
| InternalList.Enumerator< T > | GetEnumerator () |
| T | TryGet (int index, out bool fail) |
| IListSource< T > IListSource< T >. | Slice (int start, int count) |
| Returns a sub-range of this list. More... | |
| ArraySlice< T > | Slice (int start, int count=int.MaxValue) |
| Returns a sub-range of this list. More... | |
| T[] | ToArray () |
| Memory< T > | AsMemory () |
| InternalList.Scanner< T > | Scan () |
| IScanner< T > IScan< T >. | Scan () |
Public Member Functions inherited from Loyc.Collections.ITryGet< in K, out V > | |
| 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 implicit | operator ArraySlice< T > (T[] array) |
| static implicit | operator ArraySlice< T > (Memory< T > array) |
| static implicit | operator Memory< T > (ArraySlice< T > array) |
|
inline |
Initializes an array slice.
| ArgumentException | The start index was below zero. |
The (start, count) range is allowed to be invalid, as long as 'start' is zero or above.
list.Length - start.
|
inline |
Removes the first item from the range and returns it.
| fail | Receives the current value of IIsEmpty.IsEmpty. |
This method is a little unweildy in plain C#, but in EC# it will be a bit more convenient to use via extension methods like T PopFirst(ref this Range range, T defaultValue) and T? PopFirst(ref this Range range), which are illegal in plain C#.
I wanted to give this method the signature "bool PopFirst(out T first)" but the generic parameter "T" is covariant, i.e. it is marked "out T" which, ironically, is not compatible with "out T" parameters, only with return values.
Implements Loyc.Collections.IFRange< out T >.
|
inline |
Removes the last item from the range and returns it.
| fail | Receives the current value of IsEmpty. |
The remarks of IFRange{T}.PopFirst apply to this method.
Implements Loyc.Collections.IBRange< out T >.
|
inline |
Returns a sub-range of this list.
| start | The new range will start at this index in the current list (this location will be index [0] in the new range). |
| count | The desired number of elements in the new range, or int.MaxValue to get all elements until the end of the list. |
| ArgumentException | The start index was below zero. |
The (start, count) range is allowed to be invalid, as long as start is zero or above.
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 >.
References Loyc.Collections.ArraySlice< T >.Slice().
Referenced by Loyc.Collections.ArraySlice< T >.Slice().
|
inline |
Returns a sub-range of this list.
| start | The new range will start at this index in the current list (this location will be index [0] in the new range). |
| count | The desired number of elements in the new range, or int.MaxValue to get all elements until the end of the list. |
| ArgumentException | The start index was below zero. |
The (start, count) range is allowed to be invalid, as long as start is zero or above.
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 >.
|
get |
Returns the original array.
Ideally, to protect the array there would be no way to access its contents beyond the boundaries of the slice. However, the reality in .NET today is that many methods accept "slices" in the form of a triple (list, start index, count). In order to call such an old-style API using a slice, one must be able to extract the internal list and start index values.
1.8.7