/*
* Author: tdanford
* Date: Apr 9, 2009
*/
package org.seqcode.gsebricks.iterators;
import java.util.*;
public class BacktrackingIterator<X> implements Iterator<X> {
private LinkedList<X> pending;
private Iterator<X> itr;
public BacktrackingIterator(Iterator<X> i) {
itr = i;
pending = new LinkedList<X>();
}
public void addNext(X v) {
pending.addFirst(v);
}
public boolean hasNext() {
return !pending.isEmpty() || itr.hasNext();
}
public X next() {
if(pending.isEmpty()) {
return itr.next();
} else {
return pending.removeFirst();
}
}
public void remove() {
throw new UnsupportedOperationException();
}
}