Permuted3DCIterator.java
package neureka.ndim.iterator.types.permuted;
import neureka.ndim.config.types.permuted.Permuted3DConfiguration;
import neureka.ndim.iterator.NDIterator;
public final class Permuted3DCIterator extends Permuted3DConfiguration implements NDIterator
{
private int _d1 = 0;
private int _d2 = 0;
private int _d3 = 0;
public Permuted3DCIterator(Permuted3DConfiguration ndc) {
super( ndc.shape(), ndc.strides(), ndc.indicesMap() );
}
/** {@inheritDoc} */
@Override public final void increment() {
_d3++;
if ( _d3 == _shape3 ) {
_d3 = 0;
_d2++;
if ( _d2 == _shape2 ) {
_d2 = 0;
_d1++;
}
}
}
/** {@inheritDoc} */
@Override public final void decrement() {
_d3--;
if ( _d3 == -1 ) {
_d3 = _shape3 - 1;
_d2--;
if ( _d2 == -1 ) {
_d2 = _shape2 - 1;
_d1--;
}
}
}
/** {@inheritDoc} */
@Override public final int i() { return this.indexOfIndices( _d1, _d2, _d3 ); }
/** {@inheritDoc} */
@Override public final int get( int axis ) { return ( axis == 0 ? _d1 : ( axis == 1 ? _d2 : _d3 ) ); }
/** {@inheritDoc} */
@Override public final int[] get() { return new int[]{ _d1, _d2, _d3 }; }
/** {@inheritDoc} */
@Override public final void set( int axis, int position ) {
if ( axis == 0 ) _d1 = position;
else if ( axis == 1 ) _d2 = position;
else _d3 = position;
}
/** {@inheritDoc} */
@Override public final void set( int[] indices ) {
_d1 = indices[0];
_d2 = indices[1];
_d3 = indices[2];
}
}