X-Git-Url: http://sraa.de/git/?a=blobdiff_plain;f=dol%2Fsrc%2Fdol%2Fvisitor%2Fhds%2FHdsVisitor.java;fp=dol%2Fsrc%2Fdol%2Fvisitor%2Fhds%2FHdsVisitor.java;h=bb8d47a23afc94407d892b2886e2978d884e7b36;hb=8c411cf24ed0eb889191aaeafd8fa1e69081df42;hp=0000000000000000000000000000000000000000;hpb=dea7a4fb1ed110d3ce6e6d9255103d724bd66c0e;p=jump.git diff --git a/dol/src/dol/visitor/hds/HdsVisitor.java b/dol/src/dol/visitor/hds/HdsVisitor.java new file mode 100644 index 0000000..bb8d47a --- /dev/null +++ b/dol/src/dol/visitor/hds/HdsVisitor.java @@ -0,0 +1,100 @@ +/* $Id: HdsVisitor.java 1 2010-02-24 13:03:05Z haidw $$ */ +package dol.visitor.hds; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; + +import dol.datamodel.pn.ProcessNetwork; +import dol.util.CodePrintStream; +import dol.util.Copier; +import dol.visitor.PNVisitor; + +/** + * This class is a class for a visitor that is used to generate + * a HdS package. + */ +public class HdsVisitor extends PNVisitor { + + /** + * Constructor. + * + * @param packageName name of the HdS directory + */ + public HdsVisitor(String packageName) { + _packageName = packageName; + } + + /** + * + * @param x process network that needs to be rendered. + */ + public void visitComponent(ProcessNetwork x) { + try { + _generateDirHierarchy(); + + x.accept(new HdsMakefileVisitor(_srcDir)); + x.accept(new HdsModuleVisitor(_srcDir)); + x.accept(new HdsProcessVisitor(_wrapperDir)); + } + catch (Exception e) { + System.out.println("HdSVisitor: exception occured: " + + e.getMessage()); + e.printStackTrace(); + } + } + + /** + * + */ + protected void _generateDirHierarchy() + throws IOException, FileNotFoundException { + File dir = new File(_packageName); + dir.mkdirs(); + + _srcDir = _packageName + _delimiter + _srcDirName; + dir = new File(_srcDir); + dir.mkdirs(); + + _libDir = _srcDir + _delimiter + _libDirName; + dir = new File(_libDir); + dir.mkdirs(); + + _processDir = _srcDir + _delimiter + _processDirName; + dir = new File(_processDir); + dir.mkdirs(); + + _wrapperDir = _srcDir + _delimiter + _wrapperDirName; + dir = new File(_wrapperDir); + dir.mkdirs(); + + //copy library files + File source = new File(_ui.getMySystemCLib(). + replaceAll("systemC", "hds")); + File destination = new File(_libDir); + new Copier().copy(source, destination); + + //copy process source code + source = new File(_srcDirName); + destination = new File(_processDir); + new Copier().copy(source, destination); + } + + protected String _packageName = null; + + protected String _srcDir = ""; + protected static String _srcDirName = "src"; + + protected String _libDir = ""; + protected static String _libDirName = "lib"; + + protected String _processDir = ""; + protected static String _processDirName = "processes"; + + protected String _wrapperDir = ""; + protected static String _wrapperDirName = "sc_wrappers"; + + protected String _threadPostfix = "_thread"; + + protected CodePrintStream _mainPS = null; +}