aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-reasoning/src
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2023-04-07 19:49:23 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2023-04-07 19:53:43 +0200
commit6ae4346b6248198cb687a9cbbeba3bfb9c37c4b5 (patch)
treeaf42f0e78812057f5730ba86838aad58bb5686a7 /subprojects/store-reasoning/src
parentMerge pull request #24 from kris7t/partial-interpretation (diff)
downloadrefinery-6ae4346b6248198cb687a9cbbeba3bfb9c37c4b5.tar.gz
refinery-6ae4346b6248198cb687a9cbbeba3bfb9c37c4b5.tar.zst
refinery-6ae4346b6248198cb687a9cbbeba3bfb9c37c4b5.zip
refactor: remove TupleLike
* Directly transform VIATRA tuples into Refinery tuples, since creating the additional wrapper object doesn't save any memory. * Adds static arity Tuple3 and Tuple4 implementations to be more aligned with VIATRA internals and save memory for queries with up to 4 parameters. * Makes sure no new objects are allocated (for varargs handling) when a static arity tuple is hashed.
Diffstat (limited to 'subprojects/store-reasoning/src')
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleActionExecutor.java4
-rw-r--r--subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleExecutor.java7
2 files changed, 6 insertions, 5 deletions
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleActionExecutor.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleActionExecutor.java
index 80bfa6f8..7c51e3df 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleActionExecutor.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleActionExecutor.java
@@ -1,9 +1,9 @@
1package tools.refinery.store.reasoning.rule; 1package tools.refinery.store.reasoning.rule;
2 2
3import tools.refinery.store.reasoning.MergeResult; 3import tools.refinery.store.reasoning.MergeResult;
4import tools.refinery.store.tuple.TupleLike; 4import tools.refinery.store.tuple.Tuple;
5 5
6@FunctionalInterface 6@FunctionalInterface
7public interface RuleActionExecutor { 7public interface RuleActionExecutor {
8 MergeResult execute(TupleLike activationTuple); 8 MergeResult execute(Tuple activationTuple);
9} 9}
diff --git a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleExecutor.java b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleExecutor.java
index 1e5322b4..c20645fc 100644
--- a/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleExecutor.java
+++ b/subprojects/store-reasoning/src/main/java/tools/refinery/store/reasoning/rule/RuleExecutor.java
@@ -1,8 +1,8 @@
1package tools.refinery.store.reasoning.rule; 1package tools.refinery.store.reasoning.rule;
2 2
3import tools.refinery.store.reasoning.MergeResult;
4import tools.refinery.store.model.Model; 3import tools.refinery.store.model.Model;
5import tools.refinery.store.tuple.TupleLike; 4import tools.refinery.store.reasoning.MergeResult;
5import tools.refinery.store.tuple.Tuple;
6 6
7import java.util.List; 7import java.util.List;
8 8
@@ -24,7 +24,8 @@ public final class RuleExecutor {
24 public Model getModel() { 24 public Model getModel() {
25 return model; 25 return model;
26 } 26 }
27 public MergeResult execute(TupleLike activationTuple) { 27
28 public MergeResult execute(Tuple activationTuple) {
28 MergeResult mergeResult = MergeResult.UNCHANGED; 29 MergeResult mergeResult = MergeResult.UNCHANGED;
29 for (var actionExecutor : actionExecutors) { 30 for (var actionExecutor : actionExecutors) {
30 mergeResult = mergeResult.andAlso(actionExecutor.execute(activationTuple)); 31 mergeResult = mergeResult.andAlso(actionExecutor.execute(activationTuple));