aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/interpreter/values/ObjectInterpreterValue.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble/couscous/interpreter/values/ObjectInterpreterValue.java')
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/ObjectInterpreterValue.java17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/ObjectInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/ObjectInterpreterValue.java
index 4383353..acb6ef7 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/ObjectInterpreterValue.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/ObjectInterpreterValue.java
@@ -1,14 +1,18 @@
package org.zwobble.couscous.interpreter.values;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Optional;
import org.zwobble.couscous.values.PrimitiveValue;
public class ObjectInterpreterValue implements InterpreterValue {
private final ConcreteType type;
+ private final Map<String, InterpreterValue> fields;
public ObjectInterpreterValue(ConcreteType type) {
this.type = type;
+ this.fields = new HashMap<>();
}
@Override
@@ -20,4 +24,17 @@ public class ObjectInterpreterValue implements InterpreterValue {
public Optional<PrimitiveValue> toPrimitiveValue() {
return Optional.empty();
}
+
+ @Override
+ public InterpreterValue getField(String fieldName) {
+ if (fields.containsKey(fieldName)) {
+ return fields.get(fieldName);
+ } else {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+ public void setField(String fieldName, InterpreterValue value) {
+ fields.put(fieldName, value);
+ }
}