diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-07-14 22:50:55 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-07-14 22:50:55 +0100 |
| commit | 0970f5a5074da34fffaea70f3b42d012edb501c5 (patch) | |
| tree | 27ab840b4de91e790abd2606307cba47e2e4d053 /src/main/java/org/zwobble/couscous/backends | |
| parent | dc601f2d7cdec8cc9c366f70be59fc0666f132cb (diff) | |
Simplify dynamic visitor creation
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java | 19 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java | 12 |
2 files changed, 11 insertions, 20 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java index 8765b9b..91a4400 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java @@ -132,11 +132,9 @@ public class CsharpSerializer { private CsharpSerializer(SourceCodeWriter writer) { this.writer = writer; - this.write = WRITE_BUILDER.instantiate(this); + this.write = DynamicNodeVisitor.instantiate(this, "visit"); } - private static final DynamicNodeVisitor<CsharpSerializer> WRITE_BUILDER = DynamicNodeVisitor.build(CsharpSerializer.class, "visit"); - private void write(Node node) { write.accept(node); } @@ -675,13 +673,14 @@ public class CsharpSerializer { } } - private static final Function<Node, Integer> precedence = DynamicNodeMapper.build( - Precedence.class, - Integer.class, - "visit" - ).instantiate(new Precedence()); + private static int precedence(Node node) { + return Precedence.OF.apply(node); + } public static class Precedence { + private final static Function<Node, Integer> OF = + DynamicNodeMapper.instantiate(new Precedence(), "visit"); + public Integer visit(LiteralNode literal) { return Integer.MAX_VALUE; } @@ -770,8 +769,4 @@ public class CsharpSerializer { return 0; } } - - private static int precedence(Node node) { - return precedence.apply(node); - } } diff --git a/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java b/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java index be3b81f..993b6aa 100644 --- a/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java +++ b/src/main/java/org/zwobble/couscous/backends/python/PythonCodeGenerator.java @@ -4,7 +4,6 @@ import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.common.collect.Iterators; -import net.bytebuddy.description.type.TypeDescription; import org.zwobble.couscous.ast.*; import org.zwobble.couscous.ast.structure.NodeStructure; import org.zwobble.couscous.ast.visitors.DynamicNodeMapper; @@ -114,17 +113,14 @@ public class PythonCodeGenerator { private static Set<ScalarType> findReferencedClasses(TypeNode classNode) { return NodeStructure.descendantNodes(classNode) - .flatMap(findDirectlyReferencedClasses) + .flatMap(FindDirectlyReferencedClasses.VISITOR) .collect(Collectors.toSet()); } - private static final Function<Node, Stream<ScalarType>> findDirectlyReferencedClasses = - DynamicNodeMapper.<FindDirectlyReferencedClasses, Stream<ScalarType>>build( - FindDirectlyReferencedClasses.class, - new TypeDescription.ForLoadedType(Stream.class), - "visit" - ).instantiate(new FindDirectlyReferencedClasses()); public static class FindDirectlyReferencedClasses { + private static final Function<Node, Stream<ScalarType>> VISITOR = + DynamicNodeMapper.instantiate(new FindDirectlyReferencedClasses(), "visit"); + public Stream<ScalarType> visit(Node node) { return Stream.empty(); } |
