a1ec83b2b7bf8b31a11ce3f10f4b06ccf555609a
[jump.git] / dol / src / dol / visitor / PipeAndFilter / PipeAndFilterProcessVisitor.java
1 /* $Id: PipeAndFilterProcessVisitor.java 1 2010-02-24 13:03:05Z haidw $ */
2 package dol.visitor.PipeAndFilter;
3
4 import java.io.FileOutputStream;
5 import java.io.OutputStream;
6 import java.util.Vector;
7
8 import dol.datamodel.pn.Process;
9 import dol.datamodel.pn.ProcessNetwork;
10 import dol.util.CodePrintStream;
11 import dol.visitor.PNVisitor;
12 import dol.visitor.hds.HdsProcessVisitor;
13
14 /**
15  *
16  */
17 public class PipeAndFilterProcessVisitor extends PNVisitor {
18
19     /**
20      * Constructor.
21      */
22     public PipeAndFilterProcessVisitor(String dir) {
23         _dir = dir;
24     }
25
26     /**
27      *
28      */
29     public void visitComponent(ProcessNetwork x) {
30         HdsProcessVisitor visitor = new HdsProcessVisitor(_dir);
31         x.accept(visitor);
32
33         try {
34             String filename = _dir + _delimiter + "wrappers.h";
35             OutputStream file = new FileOutputStream(filename);
36             _wrapperHeader = new CodePrintStream(file);
37             _wrapperHeader.printPrefixln("#ifndef WRAPPERS_H");
38             _wrapperHeader.printPrefixln("#define WRAPPERS_H");
39             _wrapperHeader.println();
40             Vector<String> pList = new Vector<String>();
41             for (Process p : x.getProcessList()) {
42                 String basename = p.getBasename();
43                 if (!pList.contains(basename)) {
44                     pList.add(basename);
45                     _wrapperHeader.printPrefixln("#include \""
46                             + p.getBasename() + "_wrapper.h\"");
47                 }
48             }
49             _wrapperHeader.println();
50             _wrapperHeader.printPrefixln("#endif");
51         } catch (Exception e) {
52             System.out.println("Process Visitor: exception " +
53                                "occured: " + e.getMessage());
54             e.printStackTrace();
55         }
56     }
57         
58     protected String _dir = null;
59     CodePrintStream _wrapperHeader;
60 }