diff options
author | Arne Juul <arnej@yahooinc.com> | 2023-03-16 11:00:36 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahooinc.com> | 2023-03-16 11:05:35 +0000 |
commit | d883fa1f9fff36baf7231e6e9f8958017a705657 (patch) | |
tree | a99d74c943de8eb2d0b6c47746e39b612aa4c5c6 /vespajlib | |
parent | 9ec2f1a8888610e961ba4c6894abb096a8373850 (diff) |
* make InputRecorder handle slice with embedded expressions
* special handling for Generate and Slice in BindingExtractor
Diffstat (limited to 'vespajlib')
-rw-r--r-- | vespajlib/abi-spec.json | 1 | ||||
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/tensor/functions/Slice.java | 9 |
2 files changed, 10 insertions, 0 deletions
diff --git a/vespajlib/abi-spec.json b/vespajlib/abi-spec.json index c3b87278345..011e7e4a31d 100644 --- a/vespajlib/abi-spec.json +++ b/vespajlib/abi-spec.json @@ -2763,6 +2763,7 @@ "methods" : [ "public void <init>(com.yahoo.tensor.functions.TensorFunction, java.util.List)", "public java.util.List arguments()", + "public java.util.List selectorFunctions()", "public com.yahoo.tensor.functions.Slice withArguments(java.util.List)", "public com.yahoo.tensor.functions.PrimitiveTensorFunction toPrimitive()", "public com.yahoo.tensor.Tensor evaluate(com.yahoo.tensor.evaluation.EvaluationContext)", diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/Slice.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/Slice.java index a9a6df6ed4d..87e24306031 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/functions/Slice.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/Slice.java @@ -11,6 +11,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.Iterator; import java.util.List; import java.util.Objects; @@ -47,6 +48,14 @@ public class Slice<NAMETYPE extends Name> extends PrimitiveTensorFunction<NAMETY @Override public List<TensorFunction<NAMETYPE>> arguments() { return List.of(argument); } + public List<TensorFunction<NAMETYPE>> selectorFunctions() { + var result = new ArrayList<TensorFunction<NAMETYPE>>(); + for (var dimVal : subspaceAddress) { + dimVal.index().ifPresent(fun -> fun.asTensorFunction().ifPresent(tf -> result.add(tf))); + } + return result; + } + @Override public Slice<NAMETYPE> withArguments(List<TensorFunction<NAMETYPE>> arguments) { if (arguments.size() != 1) |