aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/interpreter/Arguments.java
diff options
context:
space:
mode:
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();
+ }
+
+ }
+}