package xtc.translator.representation;
import java.util.ArrayList;
import xtc.tree.GNode;
import xtc.tree.Node;
public class CompilationUnit extends BaseVisitor{
private String packageName;
private ArrayList<ClassVisitor> classVisitors;
private ArrayList<String> imports;
public CompilationUnit(){
imports = new ArrayList<String>();
classVisitors = new ArrayList<ClassVisitor>();
}
public String getPackageName() {
return packageName;
}
public ArrayList<ClassVisitor> getClassVisitors() {
return classVisitors;
}
public ArrayList<String> getImports() {
return imports;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
/**
* Every time a compilationUnit is visited, create a new ClassVisitor and
* dispatch it to collect relevant class data.
*/
public void visitCompilationUnit(GNode n) {
visit(n);
ClassVisitor newClass = new ClassVisitor();
newClass.dispatch(n);
classVisitors.add(newClass);
}
public void visitImportDeclaration(GNode n) {
String theImport = "";
Node qualifiedIdentifier = n.getNode(1);
for (int i = 0; i < qualifiedIdentifier.size(); i++) {
theImport += qualifiedIdentifier.getString(i);
if (i != qualifiedIdentifier.size() - 1) {
theImport += ".";
}
}
if ( "*".equals(n.getString(2)) ) {
theImport += ".*";
}
imports.add(theImport);
}
}