001/*- 002 ******************************************************************************* 003 * Copyright (c) 2011, 2016 Diamond Light Source Ltd. 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the Eclipse Public License v1.0 006 * which accompanies this distribution, and is available at 007 * http://www.eclipse.org/legal/epl-v10.html 008 * 009 * Contributors: 010 * Peter Chang - initial API and implementation and/or initial documentation 011 *******************************************************************************/ 012 013package org.eclipse.january.dataset; 014 015/** 016 * <p>Class to provide iteration through whole data array that backs a dataset</p> 017 * <p>Instantiate an iterator and use it in a while loop: 018 * <pre> 019 * DoubleDataset ds = DatasetFactory.createLinearSpace(DoubleDataset.class, 0, 10, 0.25); 020 * IndexIterator iter = ds.getIterator(); 021 * double[] data = ds.getData(); 022 * 023 * while (iter.hasNext()) { 024 * data[iter.index] = 1.2; 025 * } 026 * </pre> 027 * 028 */ 029public abstract class IndexIterator { 030 /** 031 * Index in array 032 */ 033 public int index; 034 035 /** 036 * @return true if there is another iteration 037 */ 038 abstract public boolean hasNext(); 039 040 /** 041 * @return position indices (nb this is reference not a copy so avoid changing and can be null) 042 */ 043 abstract public int[] getPos(); 044 045 /** 046 * Reset iterator 047 */ 048 abstract public void reset(); 049 050 /** 051 * @return shape of iterator (can be null, if not known or applicable) 052 */ 053 public int[] getShape() { 054 return null; 055 } 056}