SlicedNDIterator.java

  1. package neureka.ndim.iterator.types.sliced;

  2. import neureka.ndim.config.NDConfiguration;
  3. import neureka.ndim.iterator.NDIterator;

  4. public final class SlicedNDIterator implements NDIterator
  5. {
  6.     private final int[] _indices;
  7.     private final int[] _shape;
  8.     private final NDConfiguration _conf;

  9.     public SlicedNDIterator( NDConfiguration ndc ) {
  10.         _shape = ndc.shape();
  11.         _indices = new int[ _shape.length ];
  12.         _conf = ndc;
  13.     }

  14.     /** {@inheritDoc} */
  15.     @Override public final int shape( int i ) { return _shape[i]; }

  16.     /** {@inheritDoc} */
  17.     @Override public final int[] shape() { return _shape; }

  18.     /** {@inheritDoc} */
  19.     @Override public final void increment() { NDConfiguration.Utility.increment( _indices, _shape ); }

  20.     /** {@inheritDoc} */
  21.     @Override public final void decrement() { NDConfiguration.Utility.decrement( _indices, _shape ); }

  22.     /** {@inheritDoc} */
  23.     @Override public final int i() { return _conf.indexOfIndices(_indices); }

  24.     /** {@inheritDoc} */
  25.     @Override public final int get( int axis ) { return _indices[ axis ]; }

  26.     @Override
  27.     public final int[] get() { return _indices; }

  28.     @Override
  29.     public final void set( int axis, int position ) { _indices[ axis ] = position; }

  30.     @Override
  31.     public final void set( int[] indices ) { System.arraycopy( indices, 0, _indices, 0, indices.length ); }

  32.     @Override
  33.     public final int rank() { return _shape.length; }



  34. }