/* * Copyright (C) 2010-2014 - Andreas Maier * CONRAD is developed as an Open Source project under the GNU General Public License (GPL). */ package edu.stanford.rsl.conrad.data.numeric.iterators; import edu.stanford.rsl.conrad.data.PointwiseIterator; import edu.stanford.rsl.conrad.data.numeric.NumericGrid; public class NumericPointwiseIteratorND extends PointwiseIterator { public NumericPointwiseIteratorND(NumericGrid g) { grid = g; idx = new int[g.getSize().length]; } @Override public boolean hasNext() { for (int i = 0; i < grid.getSize().length; i++) { if (idx[i] >= grid.getSize()[i]) return false; } return true; } public float getNext() { float val = ((NumericGrid)grid).getValue(idx); iterate(); return val; } public void setNext(float val) { ((NumericGrid)grid).setValue(val,idx); iterate(); } public float get() { float val = ((NumericGrid)grid).getValue(idx); return val; } public void set(float val) { ((NumericGrid)grid).setValue(val,idx); } public void iterate(){ idx[0]++; for (int i = 0; i < grid.getSize().length-1; i++) { if (idx[i]>=grid.getSize()[i]){ idx[i+1]++; idx[i]=0; } } } }