dol: initial dol commit
[jump.git] / dol / src / dol / visitor / hds / HdsVisitor.java
1 /* $Id: HdsVisitor.java 1 2010-02-24 13:03:05Z haidw $$ */
2 package dol.visitor.hds;
3
4 import java.io.File;
5 import java.io.FileNotFoundException;
6 import java.io.IOException;
7
8 import dol.datamodel.pn.ProcessNetwork;
9 import dol.util.CodePrintStream;
10 import dol.util.Copier;
11 import dol.visitor.PNVisitor;
12
13 /**
14  * This class is a class for a visitor that is used to generate
15  * a HdS package.
16  */
17 public class HdsVisitor extends PNVisitor {
18
19     /**
20      * Constructor.
21      *
22      * @param packageName name of the HdS directory
23      */
24     public HdsVisitor(String packageName) {
25         _packageName = packageName;
26     }
27
28     /**
29      *
30      * @param x process network that needs to be rendered.
31      */
32     public void visitComponent(ProcessNetwork x) {
33         try {
34             _generateDirHierarchy();
35
36             x.accept(new HdsMakefileVisitor(_srcDir));
37             x.accept(new HdsModuleVisitor(_srcDir));
38             x.accept(new HdsProcessVisitor(_wrapperDir));
39         }
40         catch (Exception e) {
41             System.out.println("HdSVisitor: exception occured: "
42                     + e.getMessage());
43             e.printStackTrace();
44         }
45     }
46
47     /**
48      *
49      */
50     protected void _generateDirHierarchy()
51         throws IOException, FileNotFoundException {
52         File dir = new File(_packageName);
53         dir.mkdirs();
54
55         _srcDir = _packageName + _delimiter + _srcDirName;
56         dir = new File(_srcDir);
57         dir.mkdirs();
58
59         _libDir = _srcDir + _delimiter + _libDirName;
60         dir = new File(_libDir);
61         dir.mkdirs();
62
63         _processDir = _srcDir + _delimiter + _processDirName;
64         dir = new File(_processDir);
65         dir.mkdirs();
66
67         _wrapperDir = _srcDir + _delimiter + _wrapperDirName;
68         dir = new File(_wrapperDir);
69         dir.mkdirs();
70
71         //copy library files
72         File source = new File(_ui.getMySystemCLib().
73                 replaceAll("systemC", "hds"));
74         File destination = new File(_libDir);
75         new Copier().copy(source, destination);
76
77         //copy process source code
78         source = new File(_srcDirName);
79         destination = new File(_processDir);
80         new Copier().copy(source, destination);
81     }
82
83     protected String _packageName = null;
84
85     protected String _srcDir = "";
86     protected static String _srcDirName = "src";
87
88     protected String _libDir = "";
89     protected static String _libDirName = "lib";
90
91     protected String _processDir = "";
92     protected static String _processDirName = "processes";
93
94     protected String _wrapperDir = "";
95     protected static String _wrapperDirName = "sc_wrappers";
96
97     protected String _threadPostfix = "_thread";
98
99     protected CodePrintStream _mainPS = null;
100 }