dol: initial dol commit
[jump.git] / dol / src / dol / visitor / PipeAndFilter / PipeAndFilterProcessVisitor.java
diff --git a/dol/src/dol/visitor/PipeAndFilter/PipeAndFilterProcessVisitor.java b/dol/src/dol/visitor/PipeAndFilter/PipeAndFilterProcessVisitor.java
new file mode 100644 (file)
index 0000000..a1ec83b
--- /dev/null
@@ -0,0 +1,60 @@
+/* $Id: PipeAndFilterProcessVisitor.java 1 2010-02-24 13:03:05Z haidw $ */
+package dol.visitor.PipeAndFilter;
+
+import java.io.FileOutputStream;
+import java.io.OutputStream;
+import java.util.Vector;
+
+import dol.datamodel.pn.Process;
+import dol.datamodel.pn.ProcessNetwork;
+import dol.util.CodePrintStream;
+import dol.visitor.PNVisitor;
+import dol.visitor.hds.HdsProcessVisitor;
+
+/**
+ *
+ */
+public class PipeAndFilterProcessVisitor extends PNVisitor {
+
+    /**
+     * Constructor.
+     */
+    public PipeAndFilterProcessVisitor(String dir) {
+        _dir = dir;
+    }
+
+    /**
+     *
+     */
+    public void visitComponent(ProcessNetwork x) {
+        HdsProcessVisitor visitor = new HdsProcessVisitor(_dir);
+        x.accept(visitor);
+
+        try {
+            String filename = _dir + _delimiter + "wrappers.h";
+            OutputStream file = new FileOutputStream(filename);
+            _wrapperHeader = new CodePrintStream(file);
+            _wrapperHeader.printPrefixln("#ifndef WRAPPERS_H");
+            _wrapperHeader.printPrefixln("#define WRAPPERS_H");
+            _wrapperHeader.println();
+            Vector<String> pList = new Vector<String>();
+            for (Process p : x.getProcessList()) {
+                String basename = p.getBasename();
+                if (!pList.contains(basename)) {
+                    pList.add(basename);
+                    _wrapperHeader.printPrefixln("#include \""
+                            + p.getBasename() + "_wrapper.h\"");
+                }
+            }
+            _wrapperHeader.println();
+            _wrapperHeader.printPrefixln("#endif");
+        } catch (Exception e) {
+            System.out.println("Process Visitor: exception " +
+                               "occured: " + e.getMessage());
+            e.printStackTrace();
+        }
+    }
+        
+    protected String _dir = null;
+    CodePrintStream _wrapperHeader;
+}