content: /*
   * Copyright (C) 2014 - Martin Berger
   * CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
  */
  package edu.stanford.rsl.conrad.data.generic.iterators;
  
  import java.util.Iterator;
  
  import edu.stanford.rsl.conrad.data.PointwiseIterator;
  import edu.stanford.rsl.conrad.data.generic.GenericGrid;
  import edu.stanford.rsl.conrad.data.generic.datatypes.Gridable;
  
  
  public class GenericPointwiseIteratorND<T extends Gridable<T>> extends PointwiseIterator implements Iterator<T> {
  
  	public GenericPointwiseIteratorND(GenericGrid<T> g) {
  		grid = g;
  		idx=new int[grid.getSize().length];
  	}
  
  	@Override
  	public T next() {
  		T val = ((GenericGrid<T>)grid).getValue(idx);
  		iterate();
  		return val;
  	}
  
  	public void setNext(T val) {
  		((GenericGrid<T>)grid).setValue(val,idx);
  		iterate();
  	}
  	
  	public T get() {
  		T val = ((GenericGrid<T>)grid).getValue(idx);
  		return val;
  	}
  
  	public void set(T val) {
  		((GenericGrid<T>)grid).setValue(val,idx);
  	}
  
  	@Override
  	public void remove() {
  		throw new UnsupportedOperationException("Grid iterators can not remove single elements from a grid");
  	}
  }
  