+/* $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;
+}