aboutsummaryrefslogtreecommitdiffstats
path: root/model-data/src/main/java/org/eclipse/viatra/solver/data/query/relationView/FilteredRelationView.java
diff options
context:
space:
mode:
Diffstat (limited to 'model-data/src/main/java/org/eclipse/viatra/solver/data/query/relationView/FilteredRelationView.java')
-rw-r--r--model-data/src/main/java/org/eclipse/viatra/solver/data/query/relationView/FilteredRelationView.java35
1 files changed, 35 insertions, 0 deletions
diff --git a/model-data/src/main/java/org/eclipse/viatra/solver/data/query/relationView/FilteredRelationView.java b/model-data/src/main/java/org/eclipse/viatra/solver/data/query/relationView/FilteredRelationView.java
new file mode 100644
index 00000000..b5660041
--- /dev/null
+++ b/model-data/src/main/java/org/eclipse/viatra/solver/data/query/relationView/FilteredRelationView.java
@@ -0,0 +1,35 @@
1package org.eclipse.viatra.solver.data.query.relationView;
2
3import org.eclipse.viatra.solver.data.model.Model;
4import org.eclipse.viatra.solver.data.model.Tuple;
5import org.eclipse.viatra.solver.data.model.Tuple.Tuple1;
6import org.eclipse.viatra.solver.data.model.representation.RelationRepresentation;
7
8public abstract class FilteredRelationView<D> extends RelationView<D>{
9
10 protected FilteredRelationView(Model model, RelationRepresentation<D> representation) {
11 super(model, representation);
12 }
13 @Override
14 protected Object[] forwardMap(Tuple key, D value) {
15 return toTuple1Array(key);
16 }
17 @Override
18 public boolean get(Object[] tuple) {
19 int[] content = new int[tuple.length];
20 for(int i = 0; i<tuple.length; i++) {
21 content[i] =((Tuple1)tuple[i]).get(0);
22 }
23 Tuple key = Tuple.of(content);
24 D value = this.model.get(representation, key);
25 return filter(key, value);
26 }
27
28 public static Object[] toTuple1Array(Tuple t) {
29 Object[] result = new Object[t.getSize()];
30 for(int i = 0; i<t.getSize(); i++) {
31 result[i] = t.get(i);
32 }
33 return result;
34 }
35}