aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/language/src/main/java/tools/refinery/language/utils/BuiltinSymbols.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/language/src/main/java/tools/refinery/language/utils/BuiltinSymbols.java')
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/utils/BuiltinSymbols.java57
1 files changed, 53 insertions, 4 deletions
diff --git a/subprojects/language/src/main/java/tools/refinery/language/utils/BuiltinSymbols.java b/subprojects/language/src/main/java/tools/refinery/language/utils/BuiltinSymbols.java
index c87fa044..72f23e85 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/utils/BuiltinSymbols.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/utils/BuiltinSymbols.java
@@ -1,5 +1,5 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/> 2 * SPDX-FileCopyrightText: 2021-2024 The Refinery Authors <https://refinery.tools/>
3 * 3 *
4 * SPDX-License-Identifier: EPL-2.0 4 * SPDX-License-Identifier: EPL-2.0
5 */ 5 */
@@ -7,7 +7,56 @@ package tools.refinery.language.utils;
7 7
8import tools.refinery.language.model.problem.*; 8import tools.refinery.language.model.problem.*;
9 9
10public record BuiltinSymbols(Problem problem, ClassDeclaration node, PredicateDefinition equals, 10public final class BuiltinSymbols {
11 PredicateDefinition exists, ClassDeclaration contained, PredicateDefinition contains, 11 private final Problem problem;
12 PredicateDefinition invalidContainer) { 12 private final ClassDeclaration node;
13 private final PredicateDefinition equals;
14 private final PredicateDefinition exists;
15 private final ClassDeclaration contained;
16 private final PredicateDefinition contains;
17 private final PredicateDefinition invalidContainer;
18
19 public BuiltinSymbols(Problem problem) {
20 this.problem = problem;
21 node = getDeclaration(ClassDeclaration.class, "node");
22 equals = getDeclaration(PredicateDefinition.class, "equals");
23 exists = getDeclaration(PredicateDefinition.class, "exists");
24 contained = getDeclaration(ClassDeclaration.class, "contained");
25 contains = getDeclaration(PredicateDefinition.class, "contains");
26 invalidContainer = getDeclaration(PredicateDefinition.class, "invalidContainer");
27 }
28
29 public Problem problem() {
30 return problem;
31 }
32
33 public ClassDeclaration node() {
34 return node;
35 }
36
37 public PredicateDefinition equals() {
38 return equals;
39 }
40
41 public PredicateDefinition exists() {
42 return exists;
43 }
44
45 public ClassDeclaration contained() {
46 return contained;
47 }
48
49 public PredicateDefinition contains() {
50 return contains;
51 }
52
53 public PredicateDefinition invalidContainer() {
54 return invalidContainer;
55 }
56
57 private <T extends Statement & NamedElement> T getDeclaration(Class<T> type, String name) {
58 return problem.getStatements().stream().filter(type::isInstance).map(type::cast)
59 .filter(declaration -> name.equals(declaration.getName())).findFirst()
60 .orElseThrow(() -> new IllegalArgumentException("Built-in declaration " + name + " was not found"));
61 }
13} 62}