summaryrefslogtreecommitdiffstats
path: root/vespajlib/src/main
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2016-12-16 12:14:24 +0100
committerJon Bratseth <bratseth@yahoo-inc.com>2016-12-16 12:14:24 +0100
commit218590ca3eaed89e96a05edbf8a84f69cf300b22 (patch)
tree4d94de5e584f0c095b74f8c7c78afb5c1e1e922b /vespajlib/src/main
parentd8d1f9173a6d25e16f687ad19c2c3ed920299fb0 (diff)
More uniform API
Diffstat (limited to 'vespajlib/src/main')
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java1
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/MappedTensor.java6
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/Tensor.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/TensorParser.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Reduce.java4
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java9
6 files changed, 12 insertions, 12 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java
index 67ed2180201..c9ea45e59d7 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java
@@ -140,7 +140,6 @@ public class IndexedTensor implements Tensor {
this.type = type;
}
- // TODO: Let other tensor builders be created by this method as well (and update system tests)
public static Builder of(TensorType type) {
if (type.dimensions().stream().allMatch(d -> d instanceof TensorType.IndexedBoundDimension))
return new BoundBuilder(type);
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/MappedTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/MappedTensor.java
index 9e09a482070..243a8408f20 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/MappedTensor.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/MappedTensor.java
@@ -50,10 +50,12 @@ public class MappedTensor implements Tensor {
private final TensorType type;
private final ImmutableMap.Builder<TensorAddress, Double> cells = new ImmutableMap.Builder<>();
- public Builder(TensorType type) {
+ public static Builder of(TensorType type) { return new Builder(type); }
+
+ private Builder(TensorType type) {
this.type = type;
}
-
+
public MappedCellBuilder cell() {
return new MappedCellBuilder();
}
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java b/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java
index 34e36d9fb8b..1fab9939c1a 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/Tensor.java
@@ -246,7 +246,7 @@ public interface Tensor {
if (containsIndexed && containsMapped)
throw new IllegalArgumentException("Combining indexed and mapped dimensions is not supported yet");
if (containsMapped)
- return new MappedTensor.Builder(type);
+ return MappedTensor.Builder.of(type);
else // indexed or empty
return IndexedTensor.Builder.of(type);
}
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/TensorParser.java b/vespajlib/src/main/java/com/yahoo/tensor/TensorParser.java
index 5990e633266..b86d6e0729a 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/TensorParser.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/TensorParser.java
@@ -30,7 +30,7 @@ class TensorParser {
if (type.isPresent() && ! type.get().equals(TensorType.empty))
throw new IllegalArgumentException("Got zero-dimensional tensor '" + tensorString +
"but type is not empty but " + type.get());
- return IndexedTensor.Builder.of(TensorType.empty).cell(Double.parseDouble(tensorString)).build();
+ return Tensor.Builder.of(TensorType.empty).cell(Double.parseDouble(tensorString)).build();
}
}
catch (NumberFormatException e) {
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Reduce.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Reduce.java
index 22ddcc33c92..57b862534a1 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Reduce.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Reduce.java
@@ -141,14 +141,14 @@ public class Reduce extends PrimitiveTensorFunction {
ValueAggregator valueAggregator = ValueAggregator.ofType(aggregator);
for (Double cellValue : argument.cells().values())
valueAggregator.aggregate(cellValue);
- return IndexedTensor.Builder.of(TensorType.empty).cell((valueAggregator.aggregatedValue())).build();
+ return Tensor.Builder.of(TensorType.empty).cell((valueAggregator.aggregatedValue())).build();
}
private Tensor reduceIndexedVector(IndexedTensor argument) {
ValueAggregator valueAggregator = ValueAggregator.ofType(aggregator);
for (int i = 0; i < argument.length(0); i++)
valueAggregator.aggregate(argument.get(i));
- return IndexedTensor.Builder.of(TensorType.empty).cell((valueAggregator.aggregatedValue())).build();
+ return Tensor.Builder.of(TensorType.empty).cell((valueAggregator.aggregatedValue())).build();
}
private static abstract class ValueAggregator {
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java b/vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java
index a6c2462f577..1dc35f20057 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/serialization/SparseBinaryFormat.java
@@ -61,7 +61,7 @@ class SparseBinaryFormat implements BinaryFormat {
@Override
public Tensor decode(GrowableByteBuffer buffer) {
TensorType type = decodeDimensions(buffer);
- MappedTensor.Builder builder = new MappedTensor.Builder(type);
+ Tensor.Builder builder = Tensor.Builder.of(type);
decodeCells(buffer, builder, type);
return builder.build();
}
@@ -75,17 +75,16 @@ class SparseBinaryFormat implements BinaryFormat {
return builder.build();
}
- private static void decodeCells(GrowableByteBuffer buffer, MappedTensor.Builder builder, TensorType type) {
+ private static void decodeCells(GrowableByteBuffer buffer, Tensor.Builder builder, TensorType type) {
int numCells = buffer.getInt1_4Bytes();
for (int i = 0; i < numCells; ++i) {
- MappedTensor.Builder.CellBuilder cellBuilder = builder.cell();
+ Tensor.Builder.CellBuilder cellBuilder = builder.cell();
decodeAddress(buffer, cellBuilder, type);
cellBuilder.value(buffer.getDouble());
}
}
- private static void decodeAddress(GrowableByteBuffer buffer, MappedTensor.Builder.CellBuilder builder,
- TensorType type) {
+ private static void decodeAddress(GrowableByteBuffer buffer, Tensor.Builder.CellBuilder builder, TensorType type) {
for (TensorType.Dimension dimension : type.dimensions()) {
String label = decodeString(buffer);
if ( ! label.isEmpty()) {