9 node [shape=Mrecord, fontsize=8, fontname="Helvetica"];
15 for line in sys.stdin:
19 elif mode == "MODULE":
20 moduleid, module = line.split(' ',1);
21 moduleid = moduleid[1:]
22 connectorid = type = peerid = None
23 modules[moduleid] = (module, []);
26 connectorid, type = line.split(' ',1);
27 connectorid = connectorid[1:]
28 elts = type.rsplit(' ',1);
29 if elts[-1].startswith('0x'):
34 modules[moduleid][1].append((connectorid, type, peerid))
35 connectors[connectorid] = moduleid
37 for moduleid, (module, cs) in modules.iteritems():
38 module = module.split('<',1)[0]
39 module = module.rsplit('::',1)[-1]
42 for connectorid, type, peerid in cs:
43 if 'Input' in type: inputs.append("<%s>%s" % (connectorid,connectorid))
44 else: outputs.append("<%s>%s" % (connectorid,connectorid))
46 if inputs: rows.append("{%s}" % "|".join(inputs))
47 rows.append("%s (%s)" % (module, moduleid))
48 if outputs: rows.append("{%s}" % "|".join(outputs))
49 sys.stdout.write('%s [label="{%s}"]\n' % (moduleid, "|".join(rows) ))
53 for moduleid, (type, cs) in modules.iteritems():
54 for connectorid, type, peerid in cs:
56 if "Passive" in type: opts.append("arrowtail=odot");
58 if opts: opts = " [%s]" % opts
59 if "Output" in type and peerid is not None:
60 sys.stdout.write('%s:%s -> %s:%s%s\n'
61 % (moduleid, connectorid, connectors[peerid], peerid, opts))
63 sys.stdout.write('anon%d [label="", shape=point, height=.05];\n' % anonid)
65 sys.stdout.write('%s:%s -> anon%d%s;\n' % (moduleid, connectorid, anonid, opts))
67 sys.stdout.write('anon%d -> %s:%s%s;\n' % (anonid, moduleid, connectorid, opts))
70 sys.stdout.write("}\n")