/**
* Copyright (C) 2010-14 diirt developers. See COPYRIGHT.TXT
* All rights reserved. Use is subject to license terms. See LICENSE.TXT
*/
package org.diirt.vtype.ndarray;
import org.diirt.util.array.ListInt;
import org.diirt.util.array.ListNumber;
/**
*
* @author carcassi
*/
public abstract class InvertListNumber implements ListNumber {
static void fillCoords(int[] coords, int index, ListInt sizes) {
for (int i = 0; i < coords.length; i++) {
int revI = sizes.size() - i - 1;
int size = sizes.getInt(revI);
coords[revI] = index % size;
index = index / size;
}
}
static int index(int[] coords, ListInt sizes, boolean[] invert) {
int index = 0;
for (int i = 0; i < coords.length; i++) {
index *= sizes.getInt(i);
if (!invert[i]) {
index += coords[i];
} else {
index += sizes.getInt(i) - coords[i] - 1;
}
}
return index;
}
}