hydra.mantle.EliminationVariant Maven / Gradle / Ivy
package hydra.mantle;
import java.io.Serializable;
/**
* The identifier of an elimination constructor
*/
public abstract class EliminationVariant implements Serializable {
public static final hydra.core.Name NAME = new hydra.core.Name("hydra/mantle.EliminationVariant");
private EliminationVariant () {
}
public abstract R accept(Visitor visitor) ;
public interface Visitor {
R visit(List instance) ;
R visit(Optional instance) ;
R visit(Product instance) ;
R visit(Record instance) ;
R visit(Union instance) ;
R visit(Wrap instance) ;
}
public interface PartialVisitor extends Visitor {
default R otherwise(EliminationVariant instance) {
throw new IllegalStateException("Non-exhaustive patterns when matching: " + (instance));
}
default R visit(List instance) {
return otherwise((instance));
}
default R visit(Optional instance) {
return otherwise((instance));
}
default R visit(Product instance) {
return otherwise((instance));
}
default R visit(Record instance) {
return otherwise((instance));
}
default R visit(Union instance) {
return otherwise((instance));
}
default R visit(Wrap instance) {
return otherwise((instance));
}
}
public static final class List extends hydra.mantle.EliminationVariant implements Serializable {
public List () {
}
@Override
public boolean equals(Object other) {
if (!(other instanceof List)) {
return false;
}
List o = (List) (other);
return true;
}
@Override
public int hashCode() {
return 0;
}
@Override
public R accept(Visitor visitor) {
return visitor.visit(this);
}
}
public static final class Optional extends hydra.mantle.EliminationVariant implements Serializable {
public Optional () {
}
@Override
public boolean equals(Object other) {
if (!(other instanceof Optional)) {
return false;
}
Optional o = (Optional) (other);
return true;
}
@Override
public int hashCode() {
return 0;
}
@Override
public R accept(Visitor visitor) {
return visitor.visit(this);
}
}
public static final class Product extends hydra.mantle.EliminationVariant implements Serializable {
public Product () {
}
@Override
public boolean equals(Object other) {
if (!(other instanceof Product)) {
return false;
}
Product o = (Product) (other);
return true;
}
@Override
public int hashCode() {
return 0;
}
@Override
public R accept(Visitor visitor) {
return visitor.visit(this);
}
}
public static final class Record extends hydra.mantle.EliminationVariant implements Serializable {
public Record () {
}
@Override
public boolean equals(Object other) {
if (!(other instanceof Record)) {
return false;
}
Record o = (Record) (other);
return true;
}
@Override
public int hashCode() {
return 0;
}
@Override
public R accept(Visitor visitor) {
return visitor.visit(this);
}
}
public static final class Union extends hydra.mantle.EliminationVariant implements Serializable {
public Union () {
}
@Override
public boolean equals(Object other) {
if (!(other instanceof Union)) {
return false;
}
Union o = (Union) (other);
return true;
}
@Override
public int hashCode() {
return 0;
}
@Override
public R accept(Visitor visitor) {
return visitor.visit(this);
}
}
public static final class Wrap extends hydra.mantle.EliminationVariant implements Serializable {
public Wrap () {
}
@Override
public boolean equals(Object other) {
if (!(other instanceof Wrap)) {
return false;
}
Wrap o = (Wrap) (other);
return true;
}
@Override
public int hashCode() {
return 0;
}
@Override
public R accept(Visitor visitor) {
return visitor.visit(this);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy