summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne Juul <arnej@yahooinc.com>2023-03-17 10:33:18 +0000
committerArne Juul <arnej@yahooinc.com>2023-03-17 13:43:26 +0000
commitefb6f7921c239a3c48eaf472189ae4e058e231b9 (patch)
treeaa34acb395e18f450f675c5b3b1d39a63ed7e8d9
parent09c6802922df60c9ddea8fbe044006f2c645a9c7 (diff)
expose embedded expressions from DynamicTensor
-rw-r--r--vespajlib/abi-spec.json1
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/DynamicTensor.java19
2 files changed, 20 insertions, 0 deletions
diff --git a/vespajlib/abi-spec.json b/vespajlib/abi-spec.json
index 011e7e4a31d..e45b13a6eb0 100644
--- a/vespajlib/abi-spec.json
+++ b/vespajlib/abi-spec.json
@@ -1730,6 +1730,7 @@
"methods" : [
"public com.yahoo.tensor.TensorType type(com.yahoo.tensor.evaluation.TypeContext)",
"public java.util.List arguments()",
+ "public abstract java.util.List cellGeneratorFunctions()",
"public com.yahoo.tensor.functions.TensorFunction withArguments(java.util.List)",
"public com.yahoo.tensor.functions.PrimitiveTensorFunction toPrimitive()",
"public java.lang.String toString(com.yahoo.tensor.functions.ToStringContext)",
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/DynamicTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/DynamicTensor.java
index 558b01baa02..61d3acf6338 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/DynamicTensor.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/DynamicTensor.java
@@ -10,6 +10,7 @@ import com.yahoo.tensor.evaluation.EvaluationContext;
import com.yahoo.tensor.evaluation.Name;
import com.yahoo.tensor.evaluation.TypeContext;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -33,6 +34,8 @@ public abstract class DynamicTensor<NAMETYPE extends Name> extends PrimitiveTens
@Override
public List<TensorFunction<NAMETYPE>> arguments() { return List.of(); }
+ public abstract List<TensorFunction<NAMETYPE>> cellGeneratorFunctions();
+
@Override
public TensorFunction<NAMETYPE> withArguments(List<TensorFunction<NAMETYPE>> arguments) {
if (arguments.size() != 0)
@@ -71,6 +74,14 @@ public abstract class DynamicTensor<NAMETYPE extends Name> extends PrimitiveTens
this.cells = ImmutableMap.copyOf(cells);
}
+ public List<TensorFunction<NAMETYPE>> cellGeneratorFunctions() {
+ var result = new ArrayList<TensorFunction<NAMETYPE>>();
+ for (var fun : cells.values()) {
+ fun.asTensorFunction().ifPresent(tf -> result.add(tf));
+ }
+ return result;
+ }
+
@Override
public Tensor evaluate(EvaluationContext<NAMETYPE> context) {
Tensor.Builder builder = Tensor.Builder.of(type());
@@ -115,6 +126,14 @@ public abstract class DynamicTensor<NAMETYPE extends Name> extends PrimitiveTens
this.cells = List.copyOf(cells);
}
+ public List<TensorFunction<NAMETYPE>> cellGeneratorFunctions() {
+ var result = new ArrayList<TensorFunction<NAMETYPE>>();
+ for (var fun : cells) {
+ fun.asTensorFunction().ifPresent(tf -> result.add(tf));
+ }
+ return result;
+ }
+
@Override
public Tensor evaluate(EvaluationContext<NAMETYPE> context) {
IndexedTensor.BoundBuilder builder = (IndexedTensor.BoundBuilder)Tensor.Builder.of(type());