Adapter: provides a view of an IListSource{T} in which the Count is the same, but the minimum index is not necessarily zero. Returned from LCExt.NegView{T}(IListSource{T},int).
More...
Adapter: provides a view of an IListSource{T} in which the Count is the same, but the minimum index is not necessarily zero. Returned from LCExt.NegView{T}(IListSource{T},int).
This wrapper is a structure in order to offer high performance in certain scenarios.
Like ListSourceSlice, this structure provides a view of another list starting at a certain offset. Unlike ListSourceSlice, however, this structure allows the caller to access the entire original list, not just a slice.
|
IListSource< T > | OriginalList [get] |
| Gets the list that was passed to the constructor of this instance. More...
|
|
int | Offset [get, set] |
| Returns the offset added to indexes in the original list, which equals -Min. More...
|
|
int | Count [get] |
| Returns the total number of items in the list (same as OriginalList.Count). More...
|
|
int | Min [get] |
| Returns the minimum valid index. More...
|
|
int | Max [get] |
| Returns the maximum valid index, which is Min + OriginalList.Count - 1. More...
|
|
T | this[int index] [get] |
| Gets the value of the list at the specified index. In terms of the original list, this is OriginalList[index + Offset] More...
|
|
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...
|
|
|
| NegListSource (IListSource< T > list, int zeroOffset) |
| Initializes a NegListSource wrapper. More...
|
|
T | TryGet (int index, out bool fail) |
| Gets the item at the specified index, and does not throw an exception on failure.- Parameters
-
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. |
- Returns
- The element at the specified index, or default(T) if the index is not valid.
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: bool TryGet( int index, ref T value);
T TryGet( int, T defaultValue);
|
|
IRange< T > | Slice (int start, int count=int.MaxValue) |
| Returns a sub-range of this list. More...
|
|
IEnumerator< T > | GetEnumerator () |
|
System.Collections.IEnumerator
System.Collections.IEnumerable. | GetEnumerator () |
|
bool | Equals (NegListSource< T > rhs) |
|
override bool | Equals (object obj) |
|
override int | GetHashCode () |
|
override string | ToString () |
| Returns ToString() of the wrapped list. More...
|
|
Loyc.Collections.NegListSource< T >.NegListSource |
( |
IListSource< T > |
list, |
|
|
int |
zeroOffset |
|
) |
| |
|
inline |
Initializes a NegListSource wrapper.
- Parameters
-
list | A list to wrap (must not be null). |
zeroOffset | An index into the original list. this[0] will refer to that index. |
The zeroOffset can be any integer, but if it is not in the range 0 to list.Count-1, this[0] will not be valid. For example, if zeroOffset==-1, this object will have Min==1 and Max==Count.
int Loyc.Collections.NegListSource< T >.Offset |
|
getset |
Returns the offset added to indexes in the original list, which equals -Min.
The 0th item in this list the same as OriginalList[Offset].
WARNING: this is a value type. Calling the setter may have unexpected consequences for people unfamiliar with the .NET type system, because it is easy to make copies accidentally, and changing the Offset in a copy does not change the Offset in the original.