From 0bdb400deef88cb2a7c0b8c90afebf84b29c04d5 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Sat, 9 Sep 2023 12:57:49 +0200 Subject: feat: integrate DSE with partial interpretation --- .../representation/cardinality/FiniteUpperCardinality.java | 13 +++++++++++++ .../cardinality/NonEmptyCardinalityInterval.java | 14 ++++++++++++++ .../cardinality/UnboundedUpperCardinality.java | 10 ++++++++++ 3 files changed, 37 insertions(+) (limited to 'subprojects/store') diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/FiniteUpperCardinality.java b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/FiniteUpperCardinality.java index 088e3925..b63a8637 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/FiniteUpperCardinality.java +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/FiniteUpperCardinality.java @@ -67,4 +67,17 @@ public record FiniteUpperCardinality(int finiteUpperBound) implements UpperCardi } throw new IllegalArgumentException("Unknown UpperCardinality: " + other); } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + FiniteUpperCardinality that = (FiniteUpperCardinality) o; + return finiteUpperBound == that.finiteUpperBound; + } + + @Override + public int hashCode() { + return finiteUpperBound; + } } diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/NonEmptyCardinalityInterval.java b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/NonEmptyCardinalityInterval.java index bfaeea25..6bd66df7 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/NonEmptyCardinalityInterval.java +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/NonEmptyCardinalityInterval.java @@ -5,6 +5,7 @@ */ package tools.refinery.store.representation.cardinality; +import java.util.Objects; import java.util.function.BinaryOperator; import java.util.function.IntBinaryOperator; @@ -89,4 +90,17 @@ public record NonEmptyCardinalityInterval(int lowerBound, UpperCardinality upper } return "[%d..%s]".formatted(lowerBound, upperBound); } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + NonEmptyCardinalityInterval that = (NonEmptyCardinalityInterval) o; + return lowerBound == that.lowerBound && Objects.equals(upperBound, that.upperBound); + } + + @Override + public int hashCode() { + return lowerBound * 31 + upperBound.hashCode(); + } } diff --git a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/UnboundedUpperCardinality.java b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/UnboundedUpperCardinality.java index e3a334cd..03c701ae 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/UnboundedUpperCardinality.java +++ b/subprojects/store/src/main/java/tools/refinery/store/representation/cardinality/UnboundedUpperCardinality.java @@ -53,4 +53,14 @@ public final class UnboundedUpperCardinality implements UpperCardinality { public String toString() { return "*"; } + + @Override + public boolean equals(Object obj) { + return this == obj || (obj != null && getClass() == obj.getClass()); + } + + @Override + public int hashCode() { + return -1; + } } -- cgit v1.2.3-70-g09d2