aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/ast/EnumNode.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-04-10 20:15:08 +0100
committerMichael Williamson <mike@zwobble.org>2016-04-10 20:16:18 +0100
commite856154d732a8ea798dc679f671e0834d9cbb395 (patch)
tree9695f7e20f6faac142e63e9c15d1e3a72e7542c3 /src/main/java/org/zwobble/couscous/ast/EnumNode.java
parente687d9cf6246bc0d1b3a407a87599039080b7b9e (diff)
Add reading of empty enums
Diffstat (limited to 'src/main/java/org/zwobble/couscous/ast/EnumNode.java')
-rw-r--r--src/main/java/org/zwobble/couscous/ast/EnumNode.java77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/ast/EnumNode.java b/src/main/java/org/zwobble/couscous/ast/EnumNode.java
new file mode 100644
index 0000000..9e7a0b7
--- /dev/null
+++ b/src/main/java/org/zwobble/couscous/ast/EnumNode.java
@@ -0,0 +1,77 @@
+package org.zwobble.couscous.ast;
+
+import org.zwobble.couscous.ast.visitors.NodeMapper;
+import org.zwobble.couscous.ast.visitors.NodeTransformer;
+import org.zwobble.couscous.types.ScalarType;
+import org.zwobble.couscous.types.Type;
+
+import java.util.List;
+import java.util.Set;
+
+import static org.zwobble.couscous.util.ExtraLists.list;
+import static org.zwobble.couscous.util.ExtraSets.set;
+
+public class EnumNode implements TypeNode {
+ public static EnumNode declareEnum(ScalarType name) {
+ return new EnumNode(name);
+ }
+
+ private final ScalarType name;
+
+ public EnumNode(ScalarType name) {
+ this.name = name;
+ }
+
+ @Override
+ public ScalarType getName() {
+ return name;
+ }
+
+ @Override
+ public List<FormalTypeParameterNode> getTypeParameters() {
+ return list();
+ }
+
+ @Override
+ public Set<Type> getSuperTypes() {
+ return set();
+ }
+
+ @Override
+ public List<MethodNode> getMethods() {
+ return list();
+ }
+
+ @Override
+ public TypeNode transform(NodeTransformer transformer) {
+ return new EnumNode(transformer.transform(name));
+ }
+
+ @Override
+ public String toString() {
+ return "EnumNode(" +
+ "name=" + name +
+ ')';
+ }
+
+ @Override
+ public <T> T accept(NodeMapper<T> visitor) {
+ return visitor.visit(this);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ EnumNode enumNode = (EnumNode) o;
+
+ return name.equals(enumNode.name);
+
+ }
+
+ @Override
+ public int hashCode() {
+ return name.hashCode();
+ }
+}