aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-query/src/main/java/tools/refinery/store/query
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-query/src/main/java/tools/refinery/store/query
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-query/src/main/java/tools/refinery/store/query')
-rw-r--r--subprojects/store-query/src/main/java/tools/refinery/store/query/EmptyResultSet.java7
-rw-r--r--subprojects/store-query/src/main/java/tools/refinery/store/query/ResultSet.java6
2 files changed, 6 insertions, 7 deletions
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/EmptyResultSet.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/EmptyResultSet.java
index 9af73bdd..4c8eeab0 100644
--- a/subprojects/store-query/src/main/java/tools/refinery/store/query/EmptyResultSet.java
+++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/EmptyResultSet.java
@@ -3,7 +3,7 @@ package tools.refinery.store.query;
3import tools.refinery.store.map.Cursor; 3import tools.refinery.store.map.Cursor;
4import tools.refinery.store.map.Cursors; 4import tools.refinery.store.map.Cursors;
5import tools.refinery.store.query.dnf.Query; 5import tools.refinery.store.query.dnf.Query;
6import tools.refinery.store.tuple.TupleLike; 6import tools.refinery.store.tuple.Tuple;
7 7
8public record EmptyResultSet<T>(ModelQueryAdapter adapter, Query<T> query) implements ResultSet<T> { 8public record EmptyResultSet<T>(ModelQueryAdapter adapter, Query<T> query) implements ResultSet<T> {
9 @Override 9 @Override
@@ -17,13 +17,12 @@ public record EmptyResultSet<T>(ModelQueryAdapter adapter, Query<T> query) imple
17 } 17 }
18 18
19 @Override 19 @Override
20 public T get(TupleLike parameters) { 20 public T get(Tuple parameters) {
21 return query.defaultValue(); 21 return query.defaultValue();
22 } 22 }
23 23
24
25 @Override 24 @Override
26 public Cursor<TupleLike, T> getAll() { 25 public Cursor<Tuple, T> getAll() {
27 return Cursors.empty(); 26 return Cursors.empty();
28 } 27 }
29 28
diff --git a/subprojects/store-query/src/main/java/tools/refinery/store/query/ResultSet.java b/subprojects/store-query/src/main/java/tools/refinery/store/query/ResultSet.java
index 3f6bc06f..2758c74f 100644
--- a/subprojects/store-query/src/main/java/tools/refinery/store/query/ResultSet.java
+++ b/subprojects/store-query/src/main/java/tools/refinery/store/query/ResultSet.java
@@ -2,12 +2,12 @@ package tools.refinery.store.query;
2 2
3import tools.refinery.store.map.Cursor; 3import tools.refinery.store.map.Cursor;
4import tools.refinery.store.query.dnf.Query; 4import tools.refinery.store.query.dnf.Query;
5import tools.refinery.store.tuple.TupleLike; 5import tools.refinery.store.tuple.Tuple;
6 6
7public non-sealed interface ResultSet<T> extends AnyResultSet { 7public non-sealed interface ResultSet<T> extends AnyResultSet {
8 Query<T> getQuery(); 8 Query<T> getQuery();
9 9
10 T get(TupleLike parameters); 10 T get(Tuple parameters);
11 11
12 Cursor<TupleLike, T> getAll(); 12 Cursor<Tuple, T> getAll();
13} 13}