package xtc.translator.representation;
import java.util.Map;
import xtc.tree.Node;
import xtc.tree.GNode;
public class ConstructorVisitor extends MethodVisitor {
public ConstructorVisitor(GNode sourceNode) {
super(sourceNode);
}
public String getSignature(){
String out = "";
out += "__" + this.getIdentifier() + "(";
int i = 0;
// Print parameter types
for ( Map<String, String> p : this.getParameters() ) {
if (i != 0)
out += ",";
out += p.get("type");
i++;
}
out += ")";
return out;
}
public void visitConstructorDeclaration(GNode n) {
for (Object o : n) {
if (o instanceof String) {
this.setIdentifier((String) o);
}
if (o instanceof Node) {
if (((Node) o).getName() == "Block") {
ImplementationVisitor iv = new ImplementationVisitor();
iv.dispatch((Node) o);
this.setImplementation(iv.getImplementation());
this.setImplementationVisitor(iv);
}
if (((Node) o).getName() == "Modifiers") {
dispatch((Node) o);
}
if (((Node) o).getName() == "FormalParameters") {
dispatch((Node) o);
}
}
}
}
}