Enhanced C#
Language of your choice: library documentation

Documentation moved to ecsharp.net

GitHub doesn't support HTTP redirects, so you'll be redirected in 3 seconds.

 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.ReversedList< T > Struct Template Reference

Adapter: a reversed of an IList{T}. TODO: unit tests. More...


Source file:
Inheritance diagram for Loyc.Collections.ReversedList< T >:
Loyc.Collections.IListEx< T > Loyc.Collections.IListRangeMethods< T > Loyc.Collections.IListAndListSource< T > Loyc.Collections.ICollectionEx< T > Loyc.Collections.IArray< T > Loyc.Collections.IListRangeMethods< T > Loyc.Collections.IAddRange< T > Loyc.Collections.ICount Loyc.Collections.IAddRange< T > Loyc.Collections.ISinkArray< T > Loyc.Collections.IListSource< out T > Loyc.Collections.IIsEmpty Loyc.Collections.IAddRange< T > Loyc.Collections.ISinkCollection< T > Loyc.Collections.ICollectionAndReadOnly< T > Loyc.Collections.ICollectionAndReadOnly< T > Loyc.Collections.IListSource< out T >

Remarks

Adapter: a reversed of an IList{T}. TODO: unit tests.

Public fields

IList< T > _list
 

Properties

IList< T > OriginalList [get]
 
int Count [get]
 
bool IsEmpty [get]
 
this[int index] [get, set]
 
bool IsReadOnly [get]
 
- 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.IArray< T >
new T this[int index] [get, set]
 Gets or sets an element of the array-like collection. More...
 
- Properties inherited from Loyc.Collections.ISinkArray< T >
this[int index] [set]
 

Public Member Functions

 ReversedList (IList< T > list)
 
bool Equals (ReversedList< T > obj)
 
override bool Equals (object obj)
 Returns true iff the parameter 'obj' is a wrapper around the same object that this object wraps. More...
 
override int GetHashCode ()
 Returns the hashcode of the wrapped object. More...
 
override string ToString ()
 Returns ToString() of the wrapped object. More...
 
int IndexOf (T item)
 
void Insert (int index, T item)
 
void RemoveAt (int index)
 
void Add (T item)
 
void Clear ()
 
bool Contains (T item)
 
void CopyTo (T[] array, int arrayIndex)
 
bool Remove (T item)
 
IEnumerator< T > GetEnumerator ()
 
System.Collections.IEnumerator
System.Collections.IEnumerable. 
GetEnumerator ()
 
int RemoveAll (Predicate< T > match)
 Removes the all the elements that match the conditions defined by the specified predicate. More...
 
void AddRange (IEnumerable< T > list)
 
void AddRange (IReadOnlyCollection< T > list)
 
bool TrySet (int index, T value)
 
TryGet (int index, out bool fail)
 Gets the item at the specified index, and does not throw an exception on failure. More...
 
IRange< T > Slice (int start, int count=int.MaxValue)
 Returns a sub-range of this list. More...
 
void InsertRange (int index, IEnumerable< T > list)
 
void InsertRange (int index, IReadOnlyCollection< T > list)
 
void RemoveRange (int index, int amount)
 

Static Public Member Functions

static bool operator== (ReversedList< T > a, ReversedList< T > b)
 
static bool operator!= (ReversedList< T > a, ReversedList< T > b)
 

Member Function Documentation

override bool Loyc.Collections.ReversedList< T >.Equals ( object  obj)
inline

Returns true iff the parameter 'obj' is a wrapper around the same object that this object wraps.

override int Loyc.Collections.ReversedList< T >.GetHashCode ( )
inline

Returns the hashcode of the wrapped object.

int Loyc.Collections.ReversedList< T >.RemoveAll ( Predicate< T >  match)
inline

Removes the all the elements that match the conditions defined by the specified predicate.

Parameters
matchA delegate that defines the conditions of the elements to remove
Returns
The number of elements removed.

Implements Loyc.Collections.ICollectionEx< T >.

IRange<T> Loyc.Collections.ReversedList< T >.Slice ( int  start,
int  count = int.MaxValue 
)
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:

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

override string Loyc.Collections.ReversedList< T >.ToString ( )
inline

Returns ToString() of the wrapped object.

T Loyc.Collections.ReversedList< T >.TryGet ( int  index,
out bool  fail 
)
inline

Gets the item at the specified index, and does not throw an exception on failure.

Parameters
indexAn index in the range 0 to Count-1.
failA flag that is set on failure.
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);

Implements Loyc.Collections.IListSource< out T >.