package de.skuzzle.polly.core.parser.ast.declarations.types; import java.io.PrintStream; import de.skuzzle.polly.core.parser.util.PreOrderDotBuilder; /** * Class to create a simple dot output from any type expression. * * @author Simon Taddiken */ public class TypeGraphVisualizer extends DefaultTypeVisitor { private PreOrderDotBuilder dotBuilder; public void visualize(Type root, PrintStream out) { this.dotBuilder = new PreOrderDotBuilder(out, true); root.visit(this); this.dotBuilder.finish(); } @Override public int before(ListType l) { this.dotBuilder.printNode(l, "List"); return CONTINUE; } @Override public int before(Type type) { this.dotBuilder.printNode(type, type.getName().getId()); return CONTINUE; } @Override public int before(MapType m) { this.dotBuilder.printNode(m, "Map"); return CONTINUE; } @Override public int before(ProductType p) { this.dotBuilder.printNode(p, "Product"); return CONTINUE; } @Override public int before(TypeVar v) { this.dotBuilder.printNode(v, v.getName().getId()); return CONTINUE; } @Override public int after(ListType l) { this.dotBuilder.pop(l); return CONTINUE; } @Override public int after(Type type) { this.dotBuilder.pop(type); return CONTINUE; } @Override public int after(MapType m) { this.dotBuilder.pop(m); return CONTINUE; } @Override public int after(ProductType p) { this.dotBuilder.pop(p); return CONTINUE; } @Override public int after(TypeVar v) { this.dotBuilder.pop(v); return CONTINUE; } }