aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-06 22:11:12 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-06 22:11:12 +0000
commitb81b68e59c6d34ccd109ec9aa517c4ead3c56ebd (patch)
tree09a98bf42ed1be289a6501241322eb6d438f1e5a /src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java
parent45ae597f7751b7e9d12ef00cf394a9cf0155176c (diff)
Implement overloading by argument type in Python backend
Diffstat (limited to 'src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java')
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java b/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java
index 3ffa244..9bf6a51 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/values/BoxedIntegerInterpreterValue.java
@@ -8,6 +8,16 @@ import org.zwobble.couscous.values.StringValue;
import static java.util.Arrays.asList;
public class BoxedIntegerInterpreterValue {
+ public static ObjectInterpreterValue of(int value) {
+ return of(new IntegerInterpreterValue(value));
+ }
+
+ public static ObjectInterpreterValue of(IntegerInterpreterValue value) {
+ ObjectInterpreterValue obj = new ObjectInterpreterValue(TYPE);
+ obj.setField("value", value);
+ return obj;
+ }
+
public static final ConcreteType TYPE = ConcreteType.classBuilder("java.lang.Integer")
.field("value", IntegerValue.REF)
@@ -17,6 +27,12 @@ public class BoxedIntegerInterpreterValue {
return new IntegerInterpreterValue(Integer.parseInt(value.getValue()));
})
+ .staticMethod("valueOf", asList(IntegerValue.REF),
+ (environment, arguments) -> {
+ IntegerInterpreterValue value = (IntegerInterpreterValue)arguments.get(0);
+ return of(value);
+ })
+
.method(Operator.EQUALS.getMethodName(), asList(ObjectValues.OBJECT),
(environment, arguments) -> {
InterpreterValue right = arguments.getPositionalArguments().get(0);
@@ -28,5 +44,12 @@ public class BoxedIntegerInterpreterValue {
return new BooleanInterpreterValue(false);
}
})
+
+ .method("toString", asList(),
+ (environment, arguments) -> {
+ IntegerInterpreterValue value = (IntegerInterpreterValue)arguments.getReceiver().getField("value");
+ return new StringInterpreterValue(Integer.toString(value.getValue()));
+ })
+
.build();
}