aboutsummaryrefslogtreecommitdiffstats
path: root/model-data/src/main/java/org/eclipse/viatra/solver/data/model/Model.java
diff options
context:
space:
mode:
Diffstat (limited to 'model-data/src/main/java/org/eclipse/viatra/solver/data/model/Model.java')
-rw-r--r--model-data/src/main/java/org/eclipse/viatra/solver/data/model/Model.java60
1 files changed, 60 insertions, 0 deletions
diff --git a/model-data/src/main/java/org/eclipse/viatra/solver/data/model/Model.java b/model-data/src/main/java/org/eclipse/viatra/solver/data/model/Model.java
new file mode 100644
index 00000000..18fab2bf
--- /dev/null
+++ b/model-data/src/main/java/org/eclipse/viatra/solver/data/model/Model.java
@@ -0,0 +1,60 @@
1package org.eclipse.viatra.solver.data.model;
2
3import java.util.Map;
4import java.util.Set;
5
6import org.eclipse.viatra.solver.data.map.Versioned;
7import org.eclipse.viatra.solver.data.map.VersionedMap;
8import org.eclipse.viatra.solver.data.model.symbols.Symbol;
9
10public class Model implements Versioned {
11 private final ModelStore store;
12 private final Map<Symbol, VersionedMap<Tuple,Object>> maps;
13
14 public Model(ModelStore store, Map<Symbol, VersionedMap<Tuple, Object>> maps) {
15 this.store = store;
16 this.maps = maps;
17 }
18
19 public Set<Symbol> getSymbols() {
20 return store.getSymbols();
21 }
22
23 public Object get(Symbol symbol, int... key) {
24 if (maps.containsKey(symbol)) {
25 if (key.length == symbol.getArity()) {
26 return maps.get(symbol).get(Tuple.of(key));
27 } else {
28 throw new IllegalArgumentException("The arity of symbol " + symbol.getName() + "is " + symbol.getArity()
29 + " and not " + key.length);
30 }
31 } else {
32 throw new IllegalArgumentException("Model does define symbol " + symbol.getName());
33 }
34 }
35
36 public void put(Symbol symbol, Object value, int... key) {
37 if (maps.containsKey(symbol)) {
38 if (key.length == symbol.getArity()) {
39 maps.get(symbol).put(Tuple.of(key),value);
40 } else {
41 throw new IllegalArgumentException("The arity of symbol " + symbol.getName() + "is " + symbol.getArity()
42 + " and not " + key.length);
43 }
44 } else {
45 throw new IllegalArgumentException("Model does define symbol " + symbol.getName());
46 }
47 }
48
49 @Override
50 public long commit() {
51 // TODO Auto-generated method stub
52 return 0;
53 }
54
55 @Override
56 public void restore(long state) {
57 // TODO Auto-generated method stub
58
59 }
60}