diff --git a/examples/actors/xdf/MergeActors.jrag b/examples/actors/xdf/MergeActors.jrag index ec26de21363fedc20f7ed6c34e5cac9c57566168..be6b16ed2f2fffc866452bbb62af9615a86cebc6 100644 --- a/examples/actors/xdf/MergeActors.jrag +++ b/examples/actors/xdf/MergeActors.jrag @@ -23,28 +23,35 @@ aspect MergeActors { HashSet<Connection> cons = getConnections(new HashSet<Connection>()); for (Instance i : schedule) { while (i.next != null) { +// System.out.println("Searching connections for: "+i.name()+" "+i.next.name()); for (Connection c : cons) { + System.out.println(" "+c.getSource().name()+" "+c.getDest().name()); if (c.getSource() == i && c.getDest() == i.next) { +// System.out.println(" Found"); // Check port names and perform actual actor // merge. Then set remove_me flag so that this // connection will be removed from the actor // network. c.remove_me = true; + c.is$Final(false); + } else if (c.getSource() == i.next) { + c.setSource(i.id()); } } + i.merge(i.next); i.setName(i.name()+"_"+i.next.name()); i.next = i.next.next; } } } - void Connection.mergeActors() { - Instance src = getSource(); - Instance dest = getDest(); - if (dest.isSDF() && src.isSDF()) { - src.merge(dest); - src.setName(src.name()+"_"+dest.name()); - } - } +// void Connection.mergeActors() { +// Instance src = getSource(); +// Instance dest = getDest(); +// if (dest.isSDF() && src.isSDF()) { +// src.merge(dest); +// src.setName(src.name()+"_"+dest.name()); +// } +// } void Instance.merge(Instance inst) {} } diff --git a/examples/actors/xdf/SSR.jrag b/examples/actors/xdf/SSR.jrag index 29bcbb62d6dd102533c31fb4900dc37e4c08563d..9f972178f30a927aa372e383b1f31e1ab8d731f2 100644 --- a/examples/actors/xdf/SSR.jrag +++ b/examples/actors/xdf/SSR.jrag @@ -28,15 +28,17 @@ aspect SSR { } aspect SDF { - syn boolean Instance.isSDF() { + syn boolean Instance.isSDF() = xlimInstance().isSDF(); + + syn xlimAST.design Instance.xlimInstance() { try { System.out.println("Trying to open: "+name()); xlimAST.XmlParser parser = new xlimAST.XmlParser(new FileReader(name()+".xlim")); - return parser.Start().isSDF(); + return (xlimAST.design) parser.Start().getSpecification().getElement(0); } catch (Exception e) { System.out.println( name()+".xlim not found"); // e.printStackTrace(); - return false; + return new xlimAST.design(); } } } @@ -92,6 +94,14 @@ aspect ActorLookup { return ""; } + void Connection.setSource(String src) { + for (Attribute a : getAttributes()) { + if (a instanceof src) { + a.getAttrValue().setLITERAL(src); + } + } + } + syn Instance Connection.getDest() = root().getInstance(dest()); String Connection.dest() {