42 lines
966 B
C#
42 lines
966 B
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace ln.collections
|
|
{
|
|
public class ArrayStream<T>
|
|
{
|
|
public T[] Elements { get; }
|
|
public int Position { get; set; }
|
|
|
|
public ArrayStream(T[] elements)
|
|
{
|
|
Elements = elements;
|
|
Position = 0;
|
|
}
|
|
public ArrayStream(IEnumerable<T> elements)
|
|
{
|
|
Elements = elements.ToArray();
|
|
Position = 0;
|
|
}
|
|
|
|
public T Current => Elements[Position];
|
|
public T Next() => Next(1);
|
|
public T Next(int forward) => Elements[Position + 1 + forward];
|
|
|
|
public bool MoveNext()
|
|
{
|
|
if (Position >= Elements.Length)
|
|
throw new EndOfStreamException();
|
|
|
|
Position++;
|
|
return (Position < Elements.Length);
|
|
}
|
|
|
|
public bool EndOfStream => (Position < Elements.Length);
|
|
|
|
}
|
|
}
|