package railo.runtime.type.it; import java.util.ListIterator; import java.util.NoSuchElementException; import railo.runtime.type.Array; public class ArrayListIteratorImpl implements ListIterator { private static final int UNDEFINED = Integer.MIN_VALUE; private Array array; private int index=-1; private int current=UNDEFINED; /** * Constructor of the class * @param arr * @param index */ public ArrayListIteratorImpl(Array array, int index){ this.array=array; this.index=index-1; } @Override public void add(Object o) { array.setEL((++index)+1,o); } public void remove() { if(current==UNDEFINED)throw new IllegalStateException(); array.removeEL(current+1); current=UNDEFINED; } public void set(Object o) { if(current==UNDEFINED) throw new IllegalStateException(); array.setEL(current+1, o); } ///////////// public boolean hasNext() { return array.size()>index+1; } public boolean hasPrevious() { return index>-1; } public int previousIndex() { return index; } public int nextIndex() { return index+1; } public Object previous() { if(!hasPrevious()) throw new NoSuchElementException(); current=index; return array.get((index--)+1,null); } public Object next() { if(!hasNext()) throw new NoSuchElementException(); return array.get((current=++index)+1,null); } }