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 * Class to run over contiguous datasets 017 */ 018public class ContiguousIterator extends IndexIterator { 019 final private int imax; // maximum index in array 020 final private int istep; // step over items 021 final private int element; 022 023 /** 024 * Constructor for an iterator over the items of a contiguous dataset that are 025 * within the dimensions 026 * 027 * @param length of entire data array 028 */ 029 public ContiguousIterator(final int length) { 030 this(length, 1); 031 } 032 033 /** 034 * Constructor for an iterator over the items of a contiguous dataset that are 035 * within the dimensions 036 * 037 * @param length of entire data array 038 * @param isize number of elements in an item 039 */ 040 public ContiguousIterator(final int length, final int isize) { 041 this(length, isize, 0); 042 } 043 044 /** 045 * Constructor for an iterator over the items of a contiguous dataset that are 046 * within the dimensions 047 * 048 * @param length of entire data array 049 * @param isize number of elements in an item 050 * @param element element to start with (for compound datasets) 051 */ 052 public ContiguousIterator(final int length, final int isize, final int element) { 053 istep = isize; 054 index = -istep + element; 055 imax = length*isize; 056 this.element = element; 057 } 058 059 @Override 060 public boolean hasNext() { 061 index += istep; 062 return index < imax; 063 } 064 065 @Override 066 public int[] getPos() { 067 return null; 068 } 069 070 @Override 071 public void reset() { 072 index = -istep + element; 073 } 074}