summaryrefslogtreecommitdiffstats
path: root/vespajlib
diff options
context:
space:
mode:
authorArne Juul <arnej@yahooinc.com>2023-03-16 11:00:36 +0000
committerArne Juul <arnej@yahooinc.com>2023-03-16 11:05:35 +0000
commitd883fa1f9fff36baf7231e6e9f8958017a705657 (patch)
treea99d74c943de8eb2d0b6c47746e39b612aa4c5c6 /vespajlib
parent9ec2f1a8888610e961ba4c6894abb096a8373850 (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.json1
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/Slice.java9
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)