From f8824d99ce826ebf83498dbce2bbf1d98472a9e3 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 6 Oct 2015 11:52:26 +0100 Subject: Support user-defined static methods in Python backend --- src/main/java/org/zwobble/couscous/JavaProject.java | 15 +++++++++++++++ src/main/java/org/zwobble/couscous/MapBackedProject.java | 9 +++++++++ 2 files changed, 24 insertions(+) (limited to 'src/main/java') diff --git a/src/main/java/org/zwobble/couscous/JavaProject.java b/src/main/java/org/zwobble/couscous/JavaProject.java index 04ed53d..d54bd9c 100644 --- a/src/main/java/org/zwobble/couscous/JavaProject.java +++ b/src/main/java/org/zwobble/couscous/JavaProject.java @@ -1,10 +1,25 @@ package org.zwobble.couscous; +import java.util.List; + +import org.zwobble.couscous.ast.ClassNode; +import org.zwobble.couscous.interpreter.values.ConcreteType; import org.zwobble.couscous.interpreter.values.IntegerInterpreterValue; +import com.google.common.collect.Iterables; + +import lombok.val; + public class JavaProject { public static MapBackedProject.Builder builder() { return MapBackedProject.builder() .addClass(IntegerInterpreterValue.TYPE); } + + public static Project of(List classNodes) { + val concreteTypes = (Iterable)Iterables.transform(classNodes, ConcreteType::fromNode); + return builder() + .addClasses(concreteTypes) + .build(); + } } diff --git a/src/main/java/org/zwobble/couscous/MapBackedProject.java b/src/main/java/org/zwobble/couscous/MapBackedProject.java index 10f2ba1..3150279 100644 --- a/src/main/java/org/zwobble/couscous/MapBackedProject.java +++ b/src/main/java/org/zwobble/couscous/MapBackedProject.java @@ -7,6 +7,8 @@ import org.zwobble.couscous.interpreter.values.ConcreteType; import com.google.common.collect.ImmutableMap; +import lombok.val; + public class MapBackedProject implements Project { public static Builder builder() { return new Builder(); @@ -24,6 +26,13 @@ public class MapBackedProject implements Project { return this; } + public Builder addClasses(Iterable> classes) { + for (val clazz : classes) { + addClass(clazz); + } + return this; + } + public Project build() { return new MapBackedProject(classes.build()); } -- cgit v1.2.3