From: adam Date: Fri, 13 Jul 2007 07:47:41 +0000 (+0100) Subject: add support for shortcuts in FleetDoc X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=e172eba009b635961bbf034c41f0638d84bfa835;p=fleet.git add support for shortcuts in FleetDoc --- diff --git a/ships/Alu3.ship b/ships/Alu3.ship index 9a9d95b..40ed9cc 100644 --- a/ships/Alu3.ship +++ b/ships/Alu3.ship @@ -6,7 +6,11 @@ data in: in2 data in: in3 data out: out1 + shortcut to: in1 data out: out2 + shortcut to: in2 +data out: out3 + shortcut to: in3 == Constants ======================================================== == TeX ============================================================== diff --git a/ships/BitFifo.ship b/ships/BitFifo.ship index feb2c72..90f21ef 100644 --- a/ships/BitFifo.ship +++ b/ships/BitFifo.ship @@ -2,6 +2,7 @@ ship: BitFifo == Ports =========================================================== in: inEnqueue + in: inEnqueueOp constant rev: .......................1............. constant inv: ........................1............ @@ -11,6 +12,9 @@ in: inEnqueueOp out: outDequeue in: inDequeueOp +== Sample Code ====================================================== + + == Constants ======================================================== == TeX ============================================================== diff --git a/src/edu/berkeley/fleet/api/BenkoBox.java b/src/edu/berkeley/fleet/api/BenkoBox.java index 7f6cf8e..693087b 100644 --- a/src/edu/berkeley/fleet/api/BenkoBox.java +++ b/src/edu/berkeley/fleet/api/BenkoBox.java @@ -27,4 +27,7 @@ public abstract class BenkoBox { /** default implementation: the empty string */ public String getDestinationName() { return ""; } + /** return the BenkoBox which is the destination of this Box's shortcut (if any) */ + public BenkoBox getShortcut() { return null; } + } diff --git a/src/edu/berkeley/fleet/doc/BenkoBoxDescription.java b/src/edu/berkeley/fleet/doc/BenkoBoxDescription.java index 6a01297..990555d 100644 --- a/src/edu/berkeley/fleet/doc/BenkoBoxDescription.java +++ b/src/edu/berkeley/fleet/doc/BenkoBoxDescription.java @@ -9,21 +9,27 @@ public class BenkoBoxDescription implements Iterable { public boolean isInbox() { return inbox; } public boolean isOutbox() { return !inbox; } public boolean tokensOnly() { return tokenOnly; } + public String getShortcut() { return shortcut; } public Iterator iterator() { return destinations.iterator(); } // private ////////////////////////////////////////////////////////////////////////////// private final ShipDescription ship; + private final String shortcut; private final String name; private final boolean inbox; private final boolean tokenOnly; private ArrayList destinations = new ArrayList(); BenkoBoxDescription(ShipDescription ship, String name, boolean tokenOnly, boolean inbox) { + this(ship, name, tokenOnly, inbox, null); + } + BenkoBoxDescription(ShipDescription ship, String name, boolean tokenOnly, boolean inbox, String shortcut) { this.ship = ship; this.name = name; this.inbox = inbox; this.tokenOnly = tokenOnly; + this.shortcut = shortcut; ship.add(this); } diff --git a/src/edu/berkeley/fleet/doc/ShipDescription.java b/src/edu/berkeley/fleet/doc/ShipDescription.java index 238128a..4031ce1 100644 --- a/src/edu/berkeley/fleet/doc/ShipDescription.java +++ b/src/edu/berkeley/fleet/doc/ShipDescription.java @@ -56,6 +56,7 @@ public class ShipDescription implements Iterable { } else if (section.equals("ports")) { BufferedReader br = new BufferedReader(new StringReader(sections.get(section))); boolean rightSide = false; + BenkoBoxDescription p = null; for(String s = br.readLine(); s != null; s = br.readLine()) { if (s.trim().length()==0) { rightSide = true; continue; } @@ -71,10 +72,12 @@ public class ShipDescription implements Iterable { else if (key.equals("out")) { tokenOnly = false; inbox = false; } else if (key.startsWith("constant")) { continue; + } else if (key.startsWith("shortcut to")) { + continue; } else throw new RuntimeException("unknown port type: \""+key+"\""); - BenkoBoxDescription p = null; + p = null; String val = s.substring(s.indexOf(':')+1).trim(); String boxname = val.indexOf('.') != -1 ? val.substring(0, val.indexOf('.')) : val; String dest = val.indexOf('.') != -1 ? val.substring(val.indexOf('.')+1) : "";