All pastes #125960 Raw Edit

k4st

public text v1 · immutable
·published 2006-08-11 02:04 UTC
rendered paste body
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;
	}
}