interface FAIterator
{
public function current();
public function next();
public function hasNext();
public function reset();
public function key();
}
class FAProxyIterator implements FAIterator
{
private var _it:FAIterator;
public function FAProxyIterator(it:FAIterator)
{
_it = it;
}
public function current()
{
return _it.current();
}
public function next()
{
return _it.next();
}
public function reset()
{
return _it.reset();
}
public function key()
{
return _it.key();
}
public function hasNext()
{
return _it.hasNext();
}
}
class FAArrayIterator implements FAIterator
{
private var _elems:Array;
private var _index:Number = -1;
private var _size:Number = 0;
public function FAArrayIterator(elems:Array)
{
_elems = elems;
_size = _elems.length;
}
public function next()
{
var ret:Boolean;
if(ret = this.hasNext())
{
_index++;
}
return ret;
}
public function current()
{
return _elems[this.key()];
}
public function hasNext()
{
return (_size > _index + 1);
}
public function reset()
{
_index = -1;
return true;
}
public function key()
{
return _index;
}
}