- fixed clean rule
[FaRetSys.git] / ReverseIterator.cs
blob1b4dc7b9f07f6e4e592c3a5f257561c4ccf29a03
1 using System;
2 using System.Collections;
4 namespace Eithne
6 public class ReverseIterator : IEnumerable
8 IEnumerable _enumerable;
10 public ReverseIterator(IEnumerable enumerable)
12 _enumerable = enumerable;
15 public IEnumerator GetEnumerator()
17 return new ReverseIteratorEnumerator(_enumerable.GetEnumerator());
20 internal class ReverseIteratorEnumerator : IEnumerator
22 private ArrayList _list;
23 private int _index;
25 internal ReverseIteratorEnumerator( IEnumerator enumerator )
27 _list = new ArrayList();
29 while(enumerator.MoveNext())
31 _list.Add( enumerator.Current );
34 _index = _list.Count;
37 public void Reset()
39 _index = _list.Count;
42 public object Current
44 get
46 if((_index < 0) || (_index == _list.Count))
47 throw new InvalidOperationException();
48 return _list[_index];
52 public bool MoveNext()
54 if(_index >= 0)
55 --_index;
57 return _index >= 0;