コード例 #1
0
  @Override
  public Stream caseNetwork(Network network) {
    s =
        new Stream(
            folder
                + File.separator
                + UtilIR.namespace2Path(network.getType().getNamespace())
                + File.separator
                + network.getType().getName()
                + ".dot");

    java.util.Date date = new java.util.Date();
    s.println();
    s.println("/* --- CAL Dotty Printer " + new Timestamp(date.getTime()) + " --- */");

    s.println("digraph " + network.getType().getName() + "{");
    s.inc();
    s.println("node [shape=none];");
    s.println("rankdir=LR;");

    for (ActorInstance instance : network.getActors()) {
      caseActorInstance(instance);
    }

    for (Connection c : network.getConnections()) {
      doSwitch(c);
    }

    /* Network input ports */
    List<Port> inputPorts = network.getInputPorts();
    if (inputPorts.size() > 0) {
      s.println("__INs" + " [label=<");
      s.println("<TABLE BORDER=\"1\" CELLBORDER=\"0\" CELLSPACING=\"0\">");
      s.println("<TR><TD COLSPAN=\"2\">INs</TD></TR>");
      s.inc();
      for (int i = 0; i < inputPorts.size(); i++) {
        String in = inputPorts.get(i).getName();
        s.println("<TR><TD></TD><TD ALIGN=\"RIGHT\" PORT=\"" + in + "\">" + in + "</TD></TR>");
      }
      s.printlnDec("</TABLE>>];");
    }

    /* Network output ports */
    List<Port> outputPorts = network.getOutputPorts();
    if (outputPorts.size() > 0) {
      s.println("__OUTs" + " [label=<");
      s.println("<TABLE BORDER=\"1\" CELLBORDER=\"0\" CELLSPACING=\"0\">");
      s.printlnInc("<TR><TD COLSPAN=\"2\">OUTs</TD></TR>");
      for (int i = 0; i < outputPorts.size(); i++) {
        String out = outputPorts.get(i).getName();
        s.println("<TR><TD ALIGN=\"LEFT\" PORT=\"" + out + "\">" + out + "</TD><TD></TD></TR>");
      }
      s.printlnDec("</TABLE>>];");
    }

    s.println();
    s.println();

    s.println("}");

    return s;
  }