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 | Public static fields | Properties | Public Member Functions | Static Public Member Functions | List of all members
Loyc.Collections.StringSlice Struct Reference

A random-access slice of System.String. More...


Source file:
Inheritance diagram for Loyc.Collections.StringSlice:
Loyc.Collections.IRange< out T > Loyc.Collections.ICharSource Loyc.ICloneable< out T > Loyc.Collections.IBRange< out T > Loyc.Collections.IListSource< out T > Loyc.ICloneable< out T > Loyc.Collections.IListSource< out T > Loyc.Collections.IFRange< out T > Loyc.ICloneable< out T > Loyc.ICloneable< out T > Loyc.Collections.IIsEmpty

Remarks

A random-access slice of System.String.

Where possible, it is recommended that you use UString instead.

Note to self: I forgot why I made this type as a distinct entity from UString. Consider attempting to eliminate StringSlice.

Public fields

int _count
 

Public static fields

static StringSlice Empty = new StringSlice("")
 

Properties

string InternalString [get]
 
int InternalStart [get]
 
int Length [get]
 
int Count [get]
 
bool IsEmpty [get]
 
char Front [get]
 
char Back [get]
 
char this[int index] [get]
 
char this[int index, char defaultValue] [get]
 
int this[int index, int defaultValue] [get]
 
- Properties inherited from Loyc.Collections.IBRange< out T >
Back [get]
 Returns the value of the last item in the range. More...
 
- Properties inherited from Loyc.Collections.IFRange< out T >
Front [get]
 Returns the first value in the range, without popping it. More...
 
- Properties inherited from Loyc.Collections.IIsEmpty
bool IsEmpty [get]
 

Public Member Functions

 StringSlice (string list, int start, int count)
 Initializes a StringSlice. More...
 
 StringSlice (string str)
 
char PopFront (out bool fail)
 Removes the first item from the range and returns it. More...
 
char PopBack (out bool fail)
 Removes the last item from the range and returns it. More...
 
IFRange< char > ICloneable
< IFRange< char > >. 
Clone ()
 
IBRange< char > ICloneable
< IBRange< char > >. 
Clone ()
 
IRange< char > ICloneable
< IRange< char > >. 
Clone ()
 
StringSlice Clone ()
 
IEnumerator< char >
IEnumerable< char >. 
GetEnumerator ()
 
System.Collections.IEnumerator
System.Collections.IEnumerable. 
GetEnumerator ()
 
RangeEnumerator< StringSlice,
char > 
GetEnumerator ()
 
char TryGet (int index, out bool fail)
 Gets the item at the specified index, and does not throw an exception on failure. More...
 
IRange< char > IListSource< char >. Slice (int start, int count)
 Returns a substring from the character source. If some of the requested characters are past the end of the stream, the string is truncated to the available number of characters. More...
 
StringSlice Slice (int start, int count)
 Returns a substring from the character source. If some of the requested characters are past the end of the stream, the string is truncated to the available number of characters. More...
 
override int GetHashCode ()
 
override bool Equals (object obj)
 
bool Equals (StringSlice other)
 
override string ToString ()
 

Static Public Member Functions

static implicit operator StringSlice (UString s)
 
static implicit operator StringSlice (string s)
 

Constructor & Destructor Documentation

Loyc.Collections.StringSlice.StringSlice ( string  list,
int  start,
int  count 
)
inline

Initializes a StringSlice.

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 Length, the Count of the new slice is set to zero.
  • if (start + count) is above the original Length, the Count of the new slice is reduced to list.Length - start.

Member Function Documentation

char Loyc.Collections.StringSlice.PopBack ( 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}.PopFront apply to this method.

Implements Loyc.Collections.IBRange< out T >.

char Loyc.Collections.StringSlice.PopFront ( 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 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 >.

IRange<char> IListSource<char>. Loyc.Collections.StringSlice.Slice ( int  startIndex,
int  length 
)
inline

Returns a substring from the character source. If some of the requested characters are past the end of the stream, the string is truncated to the available number of characters.

Parameters
startIndexIndex of first character to return. If startIndex >= Count, an empty string is returned.
lengthNumber of characters desired.
Exceptions
ArgumentExceptionThrown if startIndex or length are negative.

Implements Loyc.Collections.ICharSource.

References Loyc.Collections.StringSlice.Slice().

Referenced by Loyc.Collections.StringSlice.Slice().

StringSlice Loyc.Collections.StringSlice.Slice ( int  startIndex,
int  length 
)
inline

Returns a substring from the character source. If some of the requested characters are past the end of the stream, the string is truncated to the available number of characters.

Parameters
startIndexIndex of first character to return. If startIndex >= Count, an empty string is returned.
lengthNumber of characters desired.
Exceptions
ArgumentExceptionThrown if startIndex or length are negative.

Implements Loyc.Collections.ICharSource.

char Loyc.Collections.StringSlice.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 >.