diff options
Diffstat (limited to 'subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTree.java')
-rw-r--r-- | subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTree.java | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTree.java b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTree.java index c1afecf9..32112e61 100644 --- a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTree.java +++ b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/internal/DecisionTree.java | |||
@@ -7,10 +7,10 @@ package tools.refinery.language.semantics.model.internal; | |||
7 | 7 | ||
8 | import org.eclipse.collections.api.factory.primitive.IntObjectMaps; | 8 | import org.eclipse.collections.api.factory.primitive.IntObjectMaps; |
9 | import tools.refinery.store.map.Cursor; | 9 | import tools.refinery.store.map.Cursor; |
10 | import tools.refinery.store.tuple.Tuple; | ||
11 | import tools.refinery.store.representation.TruthValue; | 10 | import tools.refinery.store.representation.TruthValue; |
11 | import tools.refinery.store.tuple.Tuple; | ||
12 | 12 | ||
13 | public class DecisionTree { | 13 | class DecisionTree implements MutableSeed<TruthValue> { |
14 | private final int levels; | 14 | private final int levels; |
15 | 15 | ||
16 | private final DecisionTreeNode root; | 16 | private final DecisionTreeNode root; |
@@ -29,30 +29,53 @@ public class DecisionTree { | |||
29 | this(levels, null); | 29 | this(levels, null); |
30 | } | 30 | } |
31 | 31 | ||
32 | @Override | ||
33 | public int arity() { | ||
34 | return levels; | ||
35 | } | ||
36 | |||
37 | @Override | ||
38 | public Class<TruthValue> valueType() { | ||
39 | return TruthValue.class; | ||
40 | } | ||
41 | |||
42 | @Override | ||
43 | public TruthValue reducedValue() { | ||
44 | return root.getOtherwiseReducedValue().getTruthValue(); | ||
45 | } | ||
46 | |||
47 | @Override | ||
32 | public TruthValue get(Tuple tuple) { | 48 | public TruthValue get(Tuple tuple) { |
33 | return root.getValue(levels - 1, tuple).getTruthValue(); | 49 | return root.getValue(levels - 1, tuple).getTruthValue(); |
34 | } | 50 | } |
35 | 51 | ||
52 | @Override | ||
36 | public void mergeValue(Tuple tuple, TruthValue truthValue) { | 53 | public void mergeValue(Tuple tuple, TruthValue truthValue) { |
37 | if (truthValue != null) { | 54 | if (truthValue != null) { |
38 | root.mergeValue(levels - 1, tuple, truthValue); | 55 | root.mergeValue(levels - 1, tuple, truthValue); |
39 | } | 56 | } |
40 | } | 57 | } |
41 | 58 | ||
59 | @Override | ||
42 | public void setIfMissing(Tuple tuple, TruthValue truthValue) { | 60 | public void setIfMissing(Tuple tuple, TruthValue truthValue) { |
43 | if (truthValue != null) { | 61 | if (truthValue != null) { |
44 | root.setIfMissing(levels - 1, tuple, truthValue); | 62 | root.setIfMissing(levels - 1, tuple, truthValue); |
45 | } | 63 | } |
46 | } | 64 | } |
47 | 65 | ||
66 | @Override | ||
48 | public void setAllMissing(TruthValue truthValue) { | 67 | public void setAllMissing(TruthValue truthValue) { |
49 | if (truthValue != null) { | 68 | if (truthValue != null) { |
50 | root.setAllMissing(truthValue); | 69 | root.setAllMissing(truthValue); |
51 | } | 70 | } |
52 | } | 71 | } |
53 | 72 | ||
54 | public void overwriteValues(DecisionTree values) { | 73 | @Override |
55 | root.overwriteValues(values.root); | 74 | public void overwriteValues(MutableSeed<TruthValue> values) { |
75 | if (!(values instanceof DecisionTree decisionTree)) { | ||
76 | throw new IllegalArgumentException("Incompatible overwrite: " + values); | ||
77 | } | ||
78 | root.overwriteValues(decisionTree.root); | ||
56 | } | 79 | } |
57 | 80 | ||
58 | public TruthValue getReducedValue() { | 81 | public TruthValue getReducedValue() { |
@@ -60,6 +83,7 @@ public class DecisionTree { | |||
60 | return reducedValue == null ? null : reducedValue.getTruthValue(); | 83 | return reducedValue == null ? null : reducedValue.getTruthValue(); |
61 | } | 84 | } |
62 | 85 | ||
86 | @Override | ||
63 | public Cursor<Tuple, TruthValue> getCursor(TruthValue defaultValue, int nodeCount) { | 87 | public Cursor<Tuple, TruthValue> getCursor(TruthValue defaultValue, int nodeCount) { |
64 | return new DecisionTreeCursor(levels, defaultValue, nodeCount, root); | 88 | return new DecisionTreeCursor(levels, defaultValue, nodeCount, root); |
65 | } | 89 | } |