/* * DataSetIterator.java * * Created on November 11, 2007, 6:29 AM * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package org.das2.qds; /** * Iterator that provides access to each dataset point, hiding rank when * when it is not needed. * * TODO: Rank2 and Rank3 have problems with zero length indeces. * * @author jbf */ public abstract class OldDataSetIterator { QDataSet ds; private OldDataSetIterator() { } /** * true if more data is available. */ public abstract boolean hasNext(); /** * return the next point. */ public abstract double next(); /** * returns the idimth index0 that the cursor is pointing at, after * the next() was called. * @param idim * @return */ public abstract int getIndex( int idim ); static class Rank1 extends OldDataSetIterator { int len0; int index0; Rank1( QDataSet ds ) { this.ds= ds; len0= ds.length(); index0= -1; } public boolean hasNext() { return ! ( index0==len0-1 ); } public double next() { return ds.value(++index0); } @Override public int getIndex(int idim) { return idim==0 ? index0 : 0; } } static class Rank2 extends OldDataSetIterator { int len0,len1; int index0,index1; Rank2( QDataSet ds ) { this.ds= ds; len0= ds.length(); index0= 0; len1= ds.length(index0); index1= -1; } public boolean hasNext() { return index0