public class ShipDescription implements Iterable<DockDescription> {
private String name;
- private LinkedHashMap<String,DockDescription> docks = new LinkedHashMap<String,DockDescription>();
- private HashMap<String,String> sections = new HashMap<String,String>();
- private HashMap<String,Constant> constants = new HashMap<String,Constant>();
+ private LinkedHashMap<String,DockDescription> docks = new LinkedHashMap<String,DockDescription>();
+ private LinkedHashMap<String,DockDescription> ports = new LinkedHashMap<String,DockDescription>();
+ private HashMap<String,String> sections = new HashMap<String,String>();
+ private HashMap<String,Constant> constants = new HashMap<String,Constant>();
public String getName() { return name; }
public String getSection(String sectionName) { return sections.get(sectionName); }
public DockDescription getDockDescription(String name) { return docks.get(name); }
public Iterator<DockDescription> iterator() { return docks.values().iterator(); }
+ public Iterable<DockDescription> ports() {
+ return ports.values();
+ }
public final LinkedList<PercolatedPort> percolatedPorts = new LinkedList<PercolatedPort>();
String key = s.substring(0, s.indexOf(':')).trim();
boolean inbox = false;
+ boolean dockless = false;
key = key.replaceAll(" +", " ");
if (key.equals("data in")) { inbox = true; }
else if (key.equals("data out")) { inbox = false; }
else if (key.equals("in")) { inbox = true; }
+ else if (key.equals("dockless out")) { inbox = false; dockless = true; }
else if (key.equals("out")) { inbox = false; }
else if (key.startsWith("percolate")) {
key = s;
String dest = val.indexOf('.') != -1 ? val.substring(val.indexOf('.')+1) : "";
p = docks.get(boxname);
if (p==null) {
- p = new DockDescription(this, boxname, !rightSide, inbox);
- docks.put(boxname, p);
+ p = new DockDescription(this, boxname, !rightSide, inbox, dockless);
+ ports.put(boxname, p);
+ if (!dockless) docks.put(boxname, p);
}
}
}