aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/values
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-05 12:55:11 +0100
committerMichael Williamson <mike@zwobble.org>2015-10-05 12:55:11 +0100
commitcc1543421aafac336be05ac0b75cecc2da4b6818 (patch)
tree584570ddd0af5ec866173354aa442ce215de0fab /src/main/java/org/zwobble/couscous/values
parent2f9374c7f32a761413da4c5484bec88a76c855d2 (diff)
Split interpreter values from primitives
Diffstat (limited to 'src/main/java/org/zwobble/couscous/values')
-rw-r--r--src/main/java/org/zwobble/couscous/values/BooleanValue.java20
-rw-r--r--src/main/java/org/zwobble/couscous/values/IntegerValue.java17
-rw-r--r--src/main/java/org/zwobble/couscous/values/PrimitiveValue.java5
-rw-r--r--src/main/java/org/zwobble/couscous/values/PrimitiveValueVisitor.java8
-rw-r--r--src/main/java/org/zwobble/couscous/values/PrimitiveValues.java17
-rw-r--r--src/main/java/org/zwobble/couscous/values/StringValue.java17
-rw-r--r--src/main/java/org/zwobble/couscous/values/UnitValue.java13
7 files changed, 97 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/values/BooleanValue.java b/src/main/java/org/zwobble/couscous/values/BooleanValue.java
new file mode 100644
index 0000000..e05c246
--- /dev/null
+++ b/src/main/java/org/zwobble/couscous/values/BooleanValue.java
@@ -0,0 +1,20 @@
+package org.zwobble.couscous.values;
+
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.Value;
+
+@Value
+public class BooleanValue implements PrimitiveValue {
+ @Getter(value = AccessLevel.NONE)
+ boolean value;
+
+ public boolean getValue() {
+ return value;
+ }
+
+ @Override
+ public <T> T accept(PrimitiveValueVisitor<T> visitor) {
+ return visitor.visit(this);
+ }
+}
diff --git a/src/main/java/org/zwobble/couscous/values/IntegerValue.java b/src/main/java/org/zwobble/couscous/values/IntegerValue.java
new file mode 100644
index 0000000..71c7a41
--- /dev/null
+++ b/src/main/java/org/zwobble/couscous/values/IntegerValue.java
@@ -0,0 +1,17 @@
+package org.zwobble.couscous.values;
+
+import static org.zwobble.couscous.values.TypeReference.typeRef;
+
+import lombok.Value;
+
+@Value
+public class IntegerValue implements PrimitiveValue {
+ public static final TypeReference REF = typeRef("java.lang.Integer");
+
+ int value;
+
+ @Override
+ public <T> T accept(PrimitiveValueVisitor<T> visitor) {
+ return visitor.visit(this);
+ }
+}
diff --git a/src/main/java/org/zwobble/couscous/values/PrimitiveValue.java b/src/main/java/org/zwobble/couscous/values/PrimitiveValue.java
new file mode 100644
index 0000000..2cfe40a
--- /dev/null
+++ b/src/main/java/org/zwobble/couscous/values/PrimitiveValue.java
@@ -0,0 +1,5 @@
+package org.zwobble.couscous.values;
+
+public interface PrimitiveValue {
+ <T> T accept(PrimitiveValueVisitor<T> visitor);
+}
diff --git a/src/main/java/org/zwobble/couscous/values/PrimitiveValueVisitor.java b/src/main/java/org/zwobble/couscous/values/PrimitiveValueVisitor.java
new file mode 100644
index 0000000..07047b8
--- /dev/null
+++ b/src/main/java/org/zwobble/couscous/values/PrimitiveValueVisitor.java
@@ -0,0 +1,8 @@
+package org.zwobble.couscous.values;
+
+public interface PrimitiveValueVisitor<T> {
+ T visit(IntegerValue value);
+ T visit(StringValue value);
+ T visit(BooleanValue value);
+ T visit(UnitValue unitValue);
+}
diff --git a/src/main/java/org/zwobble/couscous/values/PrimitiveValues.java b/src/main/java/org/zwobble/couscous/values/PrimitiveValues.java
new file mode 100644
index 0000000..f6420f0
--- /dev/null
+++ b/src/main/java/org/zwobble/couscous/values/PrimitiveValues.java
@@ -0,0 +1,17 @@
+package org.zwobble.couscous.values;
+
+public class PrimitiveValues {
+ public static final PrimitiveValue UNIT = UnitValue.UNIT;
+
+ public static PrimitiveValue value(String value) {
+ return new StringValue(value);
+ }
+
+ public static PrimitiveValue value(int value) {
+ return new IntegerValue(value);
+ }
+
+ public static PrimitiveValue value(boolean value) {
+ return new BooleanValue(value);
+ }
+}
diff --git a/src/main/java/org/zwobble/couscous/values/StringValue.java b/src/main/java/org/zwobble/couscous/values/StringValue.java
new file mode 100644
index 0000000..256d6d1
--- /dev/null
+++ b/src/main/java/org/zwobble/couscous/values/StringValue.java
@@ -0,0 +1,17 @@
+package org.zwobble.couscous.values;
+
+import static org.zwobble.couscous.values.TypeReference.typeRef;
+
+import lombok.Value;
+
+@Value
+public class StringValue implements PrimitiveValue {
+ public static final TypeReference REF = typeRef("java.lang.String");
+
+ String value;
+
+ @Override
+ public <T> T accept(PrimitiveValueVisitor<T> visitor) {
+ return visitor.visit(this);
+ }
+}
diff --git a/src/main/java/org/zwobble/couscous/values/UnitValue.java b/src/main/java/org/zwobble/couscous/values/UnitValue.java
new file mode 100644
index 0000000..14bf327
--- /dev/null
+++ b/src/main/java/org/zwobble/couscous/values/UnitValue.java
@@ -0,0 +1,13 @@
+package org.zwobble.couscous.values;
+
+public class UnitValue implements PrimitiveValue {
+ static final UnitValue UNIT = new UnitValue();
+
+ private UnitValue() {
+ }
+
+ @Override
+ public <T> T accept(PrimitiveValueVisitor<T> visitor) {
+ return visitor.visit(this);
+ }
+}