package com.indyforge.twod.engine.util.iteration;
import java.util.Iterator;
import java.util.NoSuchElementException;
/**
* A simple wrapped iterator.
*
* @author Christopher Probst
*
* @param <E>
* The element type.
*/
public class WrappedIterator<E> implements Iterator<E> {
// The peer iterator which is wrapped
protected final Iterator<? extends E> peerIterator;
/**
* Creates a new wrapped iterator using the given peer iterator.
*
* @param peerIterator
* The peer iterator.
*/
public WrappedIterator(Iterator<? extends E> peerIterator) {
this.peerIterator = peerIterator;
}
/*
* (non-Javadoc)
*
* @see java.util.Iterator#hasNext()
*/
@Override
public boolean hasNext() {
return peerIterator != null && peerIterator.hasNext();
}
/*
* (non-Javadoc)
*
* @see java.util.Iterator#next()
*/
@Override
public E next() {
if (peerIterator == null) {
throw new NoSuchElementException();
}
return peerIterator.next();
}
/*
* (non-Javadoc)
*
* @see java.util.Iterator#remove()
*/
@Override
public void remove() {
if (peerIterator == null) {
throw new IllegalStateException("Peer iterator is null");
}
peerIterator.remove();
}
}