diff options
Diffstat (limited to 'subprojects/store-query/src/main/java/tools/refinery/store/query/view/TuplePreservingView.java')
-rw-r--r-- | subprojects/store-query/src/main/java/tools/refinery/store/query/view/TuplePreservingView.java | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/view/TuplePreservingView.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/TuplePreservingView.java index 6bc5a708..ed12cd9d 100644 --- a/subprojects/store-query/src/main/java/tools/refinery/store/query/view/TuplePreservingView.java +++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/view/TuplePreservingView.java | |||
@@ -5,6 +5,7 @@ | |||
5 | */ | 5 | */ |
6 | package tools.refinery.store.query.view; | 6 | package tools.refinery.store.query.view; |
7 | 7 | ||
8 | import tools.refinery.store.map.CursorAsIterator; | ||
8 | import tools.refinery.store.model.Model; | 9 | import tools.refinery.store.model.Model; |
9 | import tools.refinery.store.query.term.Parameter; | 10 | import tools.refinery.store.query.term.Parameter; |
10 | import tools.refinery.store.representation.Symbol; | 11 | import tools.refinery.store.representation.Symbol; |
@@ -14,6 +15,7 @@ import tools.refinery.store.tuple.Tuple1; | |||
14 | import java.util.Arrays; | 15 | import java.util.Arrays; |
15 | import java.util.List; | 16 | import java.util.List; |
16 | import java.util.Objects; | 17 | import java.util.Objects; |
18 | import java.util.Set; | ||
17 | 19 | ||
18 | public abstract class TuplePreservingView<T> extends SymbolView<T> { | 20 | public abstract class TuplePreservingView<T> extends SymbolView<T> { |
19 | private final List<Parameter> parameters; | 21 | private final List<Parameter> parameters; |
@@ -56,6 +58,20 @@ public abstract class TuplePreservingView<T> extends SymbolView<T> { | |||
56 | } | 58 | } |
57 | 59 | ||
58 | @Override | 60 | @Override |
61 | public boolean canIndexSlot(int slot) { | ||
62 | return slot >= 0 && slot < getSymbol().arity(); | ||
63 | } | ||
64 | |||
65 | @Override | ||
66 | public Iterable<Object[]> getAdjacent(Model model, int slot, Object value) { | ||
67 | if (!(value instanceof Tuple1 tuple1)) { | ||
68 | return Set.of(); | ||
69 | } | ||
70 | return (() -> new CursorAsIterator<>(model.getInterpretation(getSymbol()).getAdjacent(slot, tuple1.get(0)), | ||
71 | this::forwardMap, this::filter)); | ||
72 | } | ||
73 | |||
74 | @Override | ||
59 | public List<Parameter> getParameters() { | 75 | public List<Parameter> getParameters() { |
60 | return parameters; | 76 | return parameters; |
61 | } | 77 | } |