+/* $Id: YapiVisitor.java 1 2010-02-24 13:03:05Z haidw $ */
+package dol.visitor.yapi;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+
+import dol.datamodel.pn.ProcessNetwork;
+import dol.util.Copier;
+import dol.visitor.PNVisitor;
+
+/**
+ *
+ */
+public class YapiVisitor extends PNVisitor {
+
+ /**
+ * Constructor.
+ */
+ public YapiVisitor(String packageName) {
+ _packageName = packageName;
+ }
+
+ /**
+ *
+ */
+ public void visitComponent(ProcessNetwork pn) {
+ try {
+ _generateDirHierarchy();
+
+ pn.accept(new YapiMakefileVisitor(_srcDir));
+ pn.accept(new YapiModuleVisitor(_srcDir));
+ pn.accept(new YapiProcessVisitor(_wrapperDir));
+
+ } catch (Exception e) {
+ System.out.println(" SystemC PN Visitor: exception " +
+ "occured: " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ *
+ */
+ private void _generateDirHierarchy()
+ throws IOException, FileNotFoundException {
+
+ File dir = new File(_packageName);
+ dir.mkdirs();
+
+ _srcDir = _packageName + _delimiter + _srcDirName;
+ dir = new File(_srcDir);
+ dir.mkdirs();
+
+ _libDir = _srcDir + _delimiter + _libDirName;
+ dir = new File(_libDir);
+ dir.mkdirs();
+
+ _processDir = _srcDir + _delimiter + _processDirName;
+ dir = new File(_processDir);
+ dir.mkdirs();
+
+ _wrapperDir = _srcDir + _delimiter + _wrapperDirName;
+ dir = new File(_wrapperDir);
+ dir.mkdirs();
+
+ // copy library
+ String libraryPath = _ui.getMySystemCLib();
+ libraryPath = libraryPath.replaceAll("systemC",
+ "yapi");
+ File source = new File(libraryPath);
+ File destination = new File(_libDir);
+ new Copier().copy(source, destination);
+
+ //copy process src code
+ source = new File(_srcDirName);
+ destination = new File(_processDir);
+ new Copier().copy(source, destination);
+ }
+
+ protected String _packageName = null;
+
+ protected String _srcDir = "";
+ protected static String _srcDirName = "src";
+
+ protected String _libDir = "";
+ protected static String _libDirName = "lib";
+
+ protected String _processDir = "";
+ protected static String _processDirName = "processes";
+
+ protected String _wrapperDir = "";
+ protected static String _wrapperDirName = "wrappers";
+}
+