public CharacterStream(string streamData) { StartOfStream = true; StreamData = streamData; ArrayData = streamData.ToCharArray(); End = new CharacterCursor(this, ArrayData.Last(), ArrayData.Length-1); Start = new CharacterCursor(this, ArrayData.First(), 0); Current = new CharacterCursor(this, ArrayData.First(), 0); }
public bool Matches(CharacterCursor cursor) { if (IsWildCard) return true; if (IsExpired) return false; IsExpired = cursor.Value == Value; return IsExpired; }
public CharacterCursor Continue() { if (StartOfStream) { StartOfStream = false; return Start; } var nextIndex = Current.Index + 1; var nextValue = ArrayData[nextIndex]; Current = new CharacterCursor(this, nextValue, nextIndex); return Current; }