aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/interpreter/Arguments.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-09-30 19:47:38 +0100
committerMichael Williamson <mike@zwobble.org>2015-09-30 19:47:38 +0100
commitc1de40d3615a8efc852fd1a12832437ee3ce4318 (patch)
treef2a19503d7b38f1cea01390a3c8567e4480364fb /src/main/java/org/zwobble/couscous/interpreter/Arguments.java
parent7c48c6b29d562ac5d3cb82b253e75e92a4b86a93 (diff)
Define methods once per type
Diffstat (limited to 'src/main/java/org/zwobble/couscous/interpreter/Arguments.java')
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/Arguments.java29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/interpreter/Arguments.java b/src/main/java/org/zwobble/couscous/interpreter/Arguments.java
new file mode 100644
index 0000000..d08393d
--- /dev/null
+++ b/src/main/java/org/zwobble/couscous/interpreter/Arguments.java
@@ -0,0 +1,29 @@
+package org.zwobble.couscous.interpreter;
+
+import java.util.List;
+
+import org.zwobble.couscous.values.InterpreterValue;
+
+import lombok.val;
+
+public class Arguments {
+ private int index = 0;
+ private List<InterpreterValue> values;
+
+ public Arguments(List<InterpreterValue> values) {
+ this.values = values;
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T extends InterpreterValue> T pop(Class<T> valueType) {
+ val value = values.get(index);
+ index++;
+ if (valueType.isInstance(value)) {
+ return (T) value;
+ } else {
+ // TODO: throw a more specific error
+ throw new UnsupportedOperationException();
+ }
+
+ }
+}