package mikera.arrayz.impl; import java.util.Iterator; import mikera.arrayz.INDArray; /** * General purpose iterator for slices of arbitrary arrays. * * @author Mike */ public class SliceIterator<T> implements Iterator<T> { private final INDArray source; private final int maxPos; private int pos; public SliceIterator(INDArray source) { this.pos=0; this.source=source; this.maxPos=source.sliceCount(); } public SliceIterator(INDArray source, int start, int length) { this.pos=start; this.source=source; this.maxPos=start+length; } @Override public boolean hasNext() { return pos<maxPos; } @SuppressWarnings("unchecked") @Override public T next() { assert(pos<maxPos); return (T)source.slice(pos++); } @Override public void remove() { throw new UnsupportedOperationException("Cannot remove from VectorIterator"); } }