@Override public void setStride(long[] stride) { if (stride.length != getRank()) { throw new IllegalArgumentException(); } int iRank = mIndexArrayData.getRank(); // Set the stride for the storage arrays mIndexStorage.setStride(java.util.Arrays.copyOfRange(stride, iRank, stride.length)); // Get the number of cells in storage arrays long[] iStride = mIndexStorage.getStride(); long current = iStride[0] * mIndexStorage.getShape()[0]; // Divide the stride by number of cells contained in storage arrays iStride = new long[iRank]; for (int i = iRank; i > 0; i--) { iStride[i - 1] = stride[i - 1] / current; if (iStride[i - 1] == 0) { iStride[i - 1] = 1; } } mIndexArrayData.setStride(iStride); }
@Override public void setIndexName(int dim, String indexName) { if (dim >= mIndexArrayData.getRank()) { mIndexStorage.setIndexName(dim, indexName); } else { mIndexArrayData.setIndexName(dim, indexName); } }
@Override public IIndex reduce(int dim) { if (dim < mIndexArrayData.getRank()) { mIndexArrayData.reduce(dim); } else { mIndexStorage.reduce(dim - mIndexArrayData.getRank()); } return this; }
@Override public void setShape(int[] shape) { if (shape.length != getRank()) { throw new IllegalArgumentException(); } mIndexArrayData.setShape(java.util.Arrays.copyOfRange(shape, 0, mIndexArrayData.getRank())); mIndexStorage.setShape( java.util.Arrays.copyOfRange(shape, mIndexArrayData.getRank(), shape.length)); }
@Override public String getIndexName(int dim) { String name; if (dim >= mIndexArrayData.getRank()) { name = mIndexStorage.getIndexName(dim); } else { name = mIndexArrayData.getIndexName(dim); } return name; }
@Override public void setOrigin(int[] origin) { if (origin.length != getRank()) { throw new IllegalArgumentException(); } mIndexArrayData.setOrigin(java.util.Arrays.copyOfRange(origin, 0, mIndexArrayData.getRank())); mIndexStorage.setOrigin( java.util.Arrays.copyOfRange(origin, mIndexArrayData.getRank(), origin.length)); }
@Override public IIndex set(int[] index) { if (index.length != getRank()) { throw new IllegalArgumentException(); } mIndexArrayData.set(java.util.Arrays.copyOfRange(index, 0, mIndexArrayData.getRank())); mIndexStorage.set(java.util.Arrays.copyOfRange(index, mIndexArrayData.getRank(), index.length)); return this; }
public int[] getCurrentCounterStorage() { return mIndexStorage.getCurrentCounter(); }
public int[] getCurrentCounterMatrix() { return mIndexArrayData.getCurrentCounter(); }
public long currentElementStorage() { return mIndexStorage.currentElement(); }
public long currentElementMatrix() { return mIndexArrayData.currentElement(); }
public List<IRange> getRangeList() { ArrayList<IRange> list = new ArrayList<IRange>(); list.addAll(mIndexArrayData.getRangeList()); list.addAll(mIndexStorage.getRangeList()); return list; }
@Override public String toString() { return mIndexArrayData.toString() + "\n" + mIndexStorage; }
@Override public String toStringDebug() { return (mIndexArrayData.toStringDebug() + mIndexStorage.toStringDebug()); }
@Override public long[] getStride() { return concat(mIndexArrayData.getStride(), mIndexStorage.getStride()); }
@Override public long getSize() { long sizeArrayData = mIndexArrayData.getSize(); return (sizeArrayData == 0 ? 1 : sizeArrayData) * mIndexStorage.getSize(); }
@Override public int[] getOrigin() { return concat(mIndexArrayData.getOrigin(), mIndexStorage.getOrigin()); }
@Override public int getRank() { return mIndexArrayData.getRank() + mIndexStorage.getRank(); }
@Override public int[] getCurrentCounter() { return concat(mIndexArrayData.getCurrentCounter(), mIndexStorage.getCurrentCounter()); }
@Override public long lastElement() { return mIndexArrayData.lastElement() * mIndexStorage.getSize() + mIndexStorage.lastElement(); }
@Override public IIndex reduce() { mIndexArrayData.reduce(); mIndexStorage.reduce(); return this; }