aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/couscous/JavaProject.java15
-rw-r--r--src/main/java/org/zwobble/couscous/MapBackedProject.java9
2 files changed, 24 insertions, 0 deletions
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<ClassNode> 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<ConcreteType<?>> classes) {
+ for (val clazz : classes) {
+ addClass(clazz);
+ }
+ return this;
+ }
+
public Project build() {
return new MapBackedProject(classes.build());
}