diff options
-rw-r--r-- | vespajlib/abi-spec.json | 1 | ||||
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/tensor/functions/DynamicTensor.java | 19 |
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()); |