    001/*-
    002 * Copyright 2022 Diamond Light Source Ltd.
    003 *
    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
    010package org.eclipse.january.dataset;
    011
    012/**
    013 * Class to run over a pair of contiguous and elemental datasets with only the second dataset read
    014 * @since 2.3
    015 */
    016public class ContiguousSingleIteratorElemental extends BroadcastSelfIterator {
    017        private final int aMax; // maximum index in array
    018
    019        public ContiguousSingleIteratorElemental(Dataset a, Dataset b) {
    020                super(a, b);
    021                aMax = a.getSize();
    022                maxShape = a.getShape();
    023                asDouble = aDataset.hasFloatingPointElements();
    024                reset();
    025        }
    026
    027        @Override
    028        public boolean hasNext() {
    029                aIndex++;
    030                bIndex = aIndex;
    031                if (aIndex >= aMax) {
    032                        return false;
    033                }
    034                if (read) {
    035                        if (asDouble) {
    036                                bDouble = bDataset.getElementDoubleAbs(aIndex);
    037                        } else {
    038                                bLong = bDataset.getElementLongAbs(aIndex);
    039                        }
    040                }
    041                return true;
    042        }
    043
    044        @Override
    045        public int[] getPos() {
    046                return null;
    047        }
    048
    049        @Override
    050        public void reset() {
    051                aIndex = -1;
    052                bIndex = -1;
    053                if (read) {
    054                        storeCurrentValues();
    055                }
    056        }
    057}