1 /* $Id: HdsVisitor.java 1 2010-02-24 13:03:05Z haidw $$ */
2 package dol.visitor.hds;
5 import java.io.FileNotFoundException;
6 import java.io.IOException;
8 import dol.datamodel.pn.ProcessNetwork;
9 import dol.util.CodePrintStream;
10 import dol.util.Copier;
11 import dol.visitor.PNVisitor;
14 * This class is a class for a visitor that is used to generate
17 public class HdsVisitor extends PNVisitor {
22 * @param packageName name of the HdS directory
24 public HdsVisitor(String packageName) {
25 _packageName = packageName;
30 * @param x process network that needs to be rendered.
32 public void visitComponent(ProcessNetwork x) {
34 _generateDirHierarchy();
36 x.accept(new HdsMakefileVisitor(_srcDir));
37 x.accept(new HdsModuleVisitor(_srcDir));
38 x.accept(new HdsProcessVisitor(_wrapperDir));
41 System.out.println("HdSVisitor: exception occured: "
50 protected void _generateDirHierarchy()
51 throws IOException, FileNotFoundException {
52 File dir = new File(_packageName);
55 _srcDir = _packageName + _delimiter + _srcDirName;
56 dir = new File(_srcDir);
59 _libDir = _srcDir + _delimiter + _libDirName;
60 dir = new File(_libDir);
63 _processDir = _srcDir + _delimiter + _processDirName;
64 dir = new File(_processDir);
67 _wrapperDir = _srcDir + _delimiter + _wrapperDirName;
68 dir = new File(_wrapperDir);
72 File source = new File(_ui.getMySystemCLib().
73 replaceAll("systemC", "hds"));
74 File destination = new File(_libDir);
75 new Copier().copy(source, destination);
77 //copy process source code
78 source = new File(_srcDirName);
79 destination = new File(_processDir);
80 new Copier().copy(source, destination);
83 protected String _packageName = null;
85 protected String _srcDir = "";
86 protected static String _srcDirName = "src";
88 protected String _libDir = "";
89 protected static String _libDirName = "lib";
91 protected String _processDir = "";
92 protected static String _processDirName = "processes";
94 protected String _wrapperDir = "";
95 protected static String _wrapperDirName = "sc_wrappers";
97 protected String _threadPostfix = "_thread";
99 protected CodePrintStream _mainPS = null;