Exemple #1
0
  @Override
  public IArray getData(int[] origin, int[] shape) throws IOException, InvalidRangeException {
    IArray array = getData().copy(false);
    IIndex index = array.getIndex();

    if (shape == null || shape.length != array.getRank()) {
      throw new InvalidRangeException("Shape must be of same rank as the array!");
    }
    if (origin == null || origin.length != array.getRank()) {
      throw new InvalidRangeException("Origin must be of same rank as the array!");
    }

    int str = 1;
    long[] stride = new long[array.getRank()];
    for (int i = array.getRank() - 1; i >= 0; i--) {
      stride[i] = str;
      str *= shape[i];
    }
    index.setStride(stride);
    index.setShape(shape);
    index.setOrigin(origin);
    array.setIndex(index);
    return array;
  }