dol: initial dol commit
[jump.git] / dol / src / dol / visitor / systemC / PNSystemCVisitor.java
1 /* $Id: PNSystemCVisitor.java 1 2010-02-24 13:03:05Z haidw $ */
2 package dol.visitor.systemC;
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 SystemC package.
16  */
17 public class PNSystemCVisitor extends PNVisitor {
18
19     /**
20      * Constructor.
21      *
22      * @param packageName Name of the SystemC directory
23      */
24     public PNSystemCVisitor(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             //_packageName = x.getName() + "SystemCPackage";
35             _generateDirHierarchy();
36
37             x.accept(new MakefileVisitor(_srcDir));
38             x.accept(new SCModuleVisitor(_srcDir));
39             x.accept(new ProcessVisitor(_wrapperDir));
40
41         }
42         catch (Exception e) {
43             System.out.println(" SystemC PN Visitor: exception "
44                     + "occured: " + e.getMessage());
45             e.printStackTrace();
46         }
47     }
48
49     /**
50      *
51      */
52     protected void _generateDirHierarchy()
53         throws IOException, FileNotFoundException {
54         File dir = new File(_packageName);
55         dir.mkdirs();
56
57         _srcDir = _packageName + _delimiter + _srcDirName;
58         dir = new File(_srcDir);
59         dir.mkdirs();
60
61         _libDir = _srcDir + _delimiter + _libDirName;
62         dir = new File(_libDir);
63         dir.mkdirs();
64
65         _processDir = _srcDir + _delimiter + _processDirName;
66         dir = new File(_processDir);
67         dir.mkdirs();
68
69         _wrapperDir = _srcDir + _delimiter + _wrapperDirName;
70         dir = new File(_wrapperDir);
71         dir.mkdirs();
72
73         //copy library files
74         File source = new File(_ui.getMySystemCLib());
75         File destination = new File(_libDir);
76         new Copier().copy(source, destination);
77
78         //copy process source code
79         source = new File(_srcDirName);
80         destination = new File(_processDir);
81         new Copier().copy(source, destination);
82     }
83
84     protected String _packageName = null;
85
86     protected String _srcDir = "";
87     protected static String _srcDirName = "src";
88
89     protected String _libDir = "";
90     protected static String _libDirName = "lib";
91
92     protected String _processDir = "";
93     protected static String _processDirName = "processes";
94
95     protected String _wrapperDir = "";
96     protected static String _wrapperDirName = "sc_wrappers";
97
98     protected String _threadPostfix = "_thread";
99
100     protected CodePrintStream _mainPS = null;
101 }