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

Adapter: a random-access range for a slice of an INegListSource{T}. More...


Source file:
Inheritance diagram for Loyc.Collections.NegListSlice< T >:
Loyc.Collections.IRange< out T > Loyc.ICloneable< out T > Loyc.Collections.IIsEmpty Loyc.Collections.INegListSource< out T > Loyc.Collections.IBRange< out T > Loyc.Collections.IListSource< out T > Loyc.ICloneable< out T > Loyc.Collections.ITryGet< in K, out V > Loyc.Collections.IIndexed< in K, out V > Loyc.Collections.IFRange< out T > Loyc.ICloneable< out T > Loyc.Collections.IHasLast< out T > Loyc.Collections.ISource< out T > Loyc.Collections.ITryGet< in K, out V > Loyc.Collections.IIndexed< in K, out V > Loyc.Collections.IIsEmpty Loyc.Collections.ICount Loyc.Collections.IIsEmpty Loyc.Collections.IIsEmpty Loyc.Collections.IHasFirst< out T > Loyc.ICloneable< out T >

Remarks

Adapter: a random-access range for a slice of an INegListSource{T}.

Template Parameters
TItem 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]
 
First [get]
 
Last [get]
 
this[int index] [get]
 
this[int index, T defaultValue] [get]
 Gets the value at the specified index, or a default value it the index is not valid. More...
 
int INegListSource< T >. Min [get]
 
int INegListSource< T >. Max [get]
 
- Properties inherited from Loyc.Collections.IHasFirst< out 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 >
Last [get]
 Gets the first item in the collection. 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.IIndexed< in K, out V >
this[K key] [get]
 Gets the value associated with the specified key. More...
 
- Properties inherited from Loyc.Collections.INegListSource< out 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...
 

Public Member Functions

 NegListSlice (INegListSource< T > list)
 
 NegListSlice (INegListSource< T > list, int start, int count=int.MaxValue)
 Initializes a slice. More...
 
PopFirst (out bool empty)
 Removes the first item from the range and returns it. More...
 
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 ()
 
NegListSlice< T > Clone ()
 
IEnumerator< T > IEnumerable< T >. GetEnumerator ()
 
System.Collections.IEnumerator
System.Collections.IEnumerable. 
GetEnumerator ()
 
RangeEnumerator< NegListSlice
< T >, T > 
GetEnumerator ()
 
TryGet (int index, out bool fail)
 
IListSource< T > IListSource< T >. Slice (int start, int count)
 Returns a sub-range of this list. More...
 
IListSource< T >
INegListSource< T >. 
Slice (int start, int count)
 Returns a sub-range of this list. More...
 
NegListSlice< T > Slice (int start, int count=int.MaxValue)
 Returns a sub-range of this list. More...
 
- 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...
 

Constructor & Destructor Documentation

Loyc.Collections.NegListSlice< T >.NegListSlice ( INegListSource< T >  list,
int  start,
int  count = int.MaxValue 
)
inline

Initializes a slice.

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

  • 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 list.Count - start.

Member Function Documentation

T Loyc.Collections.NegListSlice< T >.PopFirst ( out bool  fail)
inline

Removes the first item from the range and returns it.

Parameters
failReceives the current value of IIsEmpty.IsEmpty.
Returns
The first item of the range, or default(T) if 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 >.

T Loyc.Collections.NegListSlice< T >.PopLast ( out bool  fail)
inline

Removes the last item from the range and returns it.

Parameters
failReceives the current value of IsEmpty.
Returns
The first item of the range, or default(T) if IsEmpty.

The remarks of IFRange{T}.PopFirst apply to this method.

Implements Loyc.Collections.IBRange< out T >.

IListSource<T> IListSource<T>. Loyc.Collections.NegListSlice< T >.Slice ( int  start,
int  count 
)
inline
IListSource<T> INegListSource<T>. Loyc.Collections.NegListSlice< T >.Slice ( int  start,
int  count 
)
inline
NegListSlice<T> Loyc.Collections.NegListSlice< T >.Slice ( int  start,
int  count = int.MaxValue 
)
inline

Returns a sub-range of this list.

Implements Loyc.Collections.INegListSource< out T >.

Property Documentation

T Loyc.Collections.NegListSlice< T >.this[int index, T defaultValue]
get

Gets the value at the specified index, or a default value it the index is not valid.

Parameters
defaultValueDefault value. If you would like to use null for this parameter, consider using the extension method TryGet(index).Or(defaultValue) as there is no way in C# 9 to tell the C# compiler that the return value may be null if the default value is null.