aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/logic/src/main/java/tools/refinery/logic/term/uppercardinality/UnboundedUpperCardinality.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/logic/src/main/java/tools/refinery/logic/term/uppercardinality/UnboundedUpperCardinality.java')
-rw-r--r--subprojects/logic/src/main/java/tools/refinery/logic/term/uppercardinality/UnboundedUpperCardinality.java66
1 files changed, 66 insertions, 0 deletions
diff --git a/subprojects/logic/src/main/java/tools/refinery/logic/term/uppercardinality/UnboundedUpperCardinality.java b/subprojects/logic/src/main/java/tools/refinery/logic/term/uppercardinality/UnboundedUpperCardinality.java
new file mode 100644
index 00000000..b6ecc1bd
--- /dev/null
+++ b/subprojects/logic/src/main/java/tools/refinery/logic/term/uppercardinality/UnboundedUpperCardinality.java
@@ -0,0 +1,66 @@
1/*
2 * SPDX-FileCopyrightText: 2021-2023 The Refinery Authors <https://refinery.tools/>
3 *
4 * SPDX-License-Identifier: EPL-2.0
5 */
6package tools.refinery.logic.term.uppercardinality;
7
8import org.jetbrains.annotations.NotNull;
9
10// Singleton implementation, because there is only a single countable infinity.
11@SuppressWarnings("squid:S6548")
12public final class UnboundedUpperCardinality implements UpperCardinality {
13 static final UnboundedUpperCardinality INSTANCE = new UnboundedUpperCardinality();
14
15 private UnboundedUpperCardinality() {
16 // Singleton constructor.
17 }
18
19 @Override
20 public UpperCardinality add(UpperCardinality other) {
21 return this;
22 }
23
24 @Override
25 public UpperCardinality take(int count) {
26 return this;
27 }
28
29 @Override
30 public UpperCardinality multiply(UpperCardinality other) {
31 return this;
32 }
33
34 // This should always be greater than any finite cardinality.
35 @SuppressWarnings("ComparatorMethodParameterNotUsed")
36 @Override
37 public int compareTo(@NotNull UpperCardinality upperCardinality) {
38 if (upperCardinality instanceof FiniteUpperCardinality) {
39 return 1;
40 }
41 if (upperCardinality instanceof UnboundedUpperCardinality) {
42 return 0;
43 }
44 throw new IllegalArgumentException("Unknown UpperCardinality: " + upperCardinality);
45 }
46
47 @Override
48 public int compareToInt(int value) {
49 return 1;
50 }
51
52 @Override
53 public String toString() {
54 return "*";
55 }
56
57 @Override
58 public boolean equals(Object obj) {
59 return this == obj || (obj != null && getClass() == obj.getClass());
60 }
61
62 @Override
63 public int hashCode() {
64 return -1;
65 }
66}