summaryrefslogtreecommitdiffstats
path: root/vespajlib/src/main/java/com/yahoo/tensor/DirectIndexedAddress.java
diff options
context:
space:
mode:
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/tensor/DirectIndexedAddress.java')
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/DirectIndexedAddress.java11
1 files changed, 10 insertions, 1 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/DirectIndexedAddress.java b/vespajlib/src/main/java/com/yahoo/tensor/DirectIndexedAddress.java
index 37752361876..4379d50520c 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/DirectIndexedAddress.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/DirectIndexedAddress.java
@@ -7,19 +7,25 @@ package com.yahoo.tensor;
* long stride = addr.getStride(dimension)
* i = 0...size_of_dimension
* double value = tensor.get(base + i * stride);
+ *
+ * @author baldersheim
*/
public final class DirectIndexedAddress {
+
private final DimensionSizes sizes;
- private final int [] indexes;
+ private final int[] indexes;
private long directIndex;
+
private DirectIndexedAddress(DimensionSizes sizes) {
this.sizes = sizes;
indexes = new int[sizes.dimensions()];
directIndex = 0;
}
+
static DirectIndexedAddress of(DimensionSizes sizes) {
return new DirectIndexedAddress(sizes);
}
+
/** Sets the current index of a dimension */
public void setIndex(int dimension, int index) {
if (index < 0 || index >= sizes.size(dimension)) {
@@ -29,10 +35,13 @@ public final class DirectIndexedAddress {
directIndex += getStride(dimension) * diff;
indexes[dimension] = index;
}
+
/** Retrieve the index that can be used for direct lookup in an indexed tensor. */
public long getDirectIndex() { return directIndex; }
+
/** returns the stride to be used for the given dimension */
public long getStride(int dimension) {
return sizes.productOfDimensionsAfter(dimension);
}
+
}