|
Enhanced C#
Language of your choice: library documentation
|
Adapter: a random-access range for a slice of an INegListSource{T}. More...
Adapter: a random-access range for a slice of an INegListSource{T}.
| T | Item type in the list |
Although this slices a neg-list, the slice itself is an ordinary zero-indexed IListSource{T}. It implements INegListSource{T} for completeness, but its Min is 0.
Public fields | |
| INegListSource< T > | _list |
| int | _start |
| int | _count |
Properties | |
| int | Count [get] |
| bool | IsEmpty [get] |
| T | Front [get] |
| T | Back [get] |
| T | this[int index] [get] |
| T | this[int index, T defaultValue] [get] |
| int INegListSource< T >. | Min [get] |
| int INegListSource< T >. | Max [get] |
Properties inherited from Loyc.Collections.IBRange< out T > | |
| T | Back [get] |
| Returns the value of the last item in the range. More... | |
Properties inherited from Loyc.Collections.IFRange< out T > | |
| T | Front [get] |
| Returns the first value in the range, without popping it. More... | |
Properties inherited from Loyc.Collections.IIsEmpty | |
| bool | IsEmpty [get] |
Properties inherited from Loyc.Collections.INegListSource< T > | |
| int | Min [get] |
| Returns the minimum valid index in the collection. More... | |
| int | Max [get] |
| Returns the maximum valid index in the collection. More... | |
| T | this[int index] [get] |
| Gets the item at the specified index. More... | |
Public Member Functions | |
| NegListSlice (INegListSource< T > list, int start, int count) | |
| Initializes a slice. More... | |
| T | PopFront (out bool empty) |
| Removes the first item from the range and returns it. More... | |
| T | PopBack (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 () |
| NegListSlice< T > | Clone () |
| IEnumerator< T > IEnumerable< T >. | GetEnumerator () |
|
System.Collections.IEnumerator System.Collections.IEnumerable. | GetEnumerator () |
|
RangeEnumerator< NegListSlice < T >, T > | GetEnumerator () |
| T | TryGet (int index, out bool fail) |
| Gets the item at the specified index, and does not throw an exception on failure. More... | |
| IRange< T > IListSource< T >. | Slice (int start, int count) |
| Returns a sub-range of this list. More... | |
| IRange< T > INegListSource< T >. | Slice (int start, int count) |
| Returns a sub-range of this list. More... | |
| NegListSlice< T > | Slice (int start, int count) |
| Returns a sub-range of this list. More... | |
|
inline |
Initializes a slice.
| ArgumentException | The start index was below zero. |
The (start, count) range is allowed to be invalid, as long as 'start' is Min or above and 'count' is zero or above.
list.Count - start. References Loyc.Collections.INegListSource< T >.Min.
|
inline |
Removes the last item from the range and returns it.
| fail | Receives the current value of IsEmpty. |
The remarks of IFRange{T}.PopFront apply to this method.
Implements Loyc.Collections.IBRange< out T >.
|
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 PopFirst(ref this Range range, T defaultValue) and 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 |
Returns a sub-range of this list.
Implements Loyc.Collections.INegListSource< T >.
References Loyc.Collections.NegListSlice< T >.Slice().
Referenced by Loyc.Collections.NegListSlice< T >.Slice().
|
inline |
Returns a sub-range of this list.
Implements Loyc.Collections.INegListSource< T >.
References Loyc.Collections.NegListSlice< T >.Slice().
Referenced by Loyc.Collections.NegListSlice< T >.Slice().
|
inline |
Returns a sub-range of this list.
Implements Loyc.Collections.INegListSource< T >.
|
inline |
Gets the item at the specified index, and does not throw an exception on failure.
| index | An index in the range Min to Max. |
| fail | A flag that is set on failure. To improve performance slightly, this flag is not cleared on success. |
In my original design, the caller could provide a value to return on failure, but this would not allow T to be marked as "out" in C# 4. For the same reason, we cannot have a ref/out T parameter. Instead, the following extension methods are provided:
Implements Loyc.Collections.INegListSource< T >.
1.8.7