pw.println("");
pw.println("public class "+filename+" extends InterpreterShip {");
pw.println("");
+ pw.println(" public "+filename+"(Interpreter fleet, String name, ShipDescription sd) {");
+ pw.println(" super(fleet, sd);");
+ pw.println(" }");
+ pw.println("");
for(DockDescription b : sd) {
String name = b.getName();
pw.print(" InterpreterDock box_");
pw.print(" = new InterpreterDock(this, shipDescription.getDockDescription(\""+name+"\"));");
}
pw.println("");
- pw.println(" public "+filename+"(Interpreter fleet, String name, ShipDescription sd) {");
- pw.println(" super(fleet, sd);");
- for(DockDescription b : sd)
- pw.println(" addDock(\""+b.getName()+"\", box_"+b.getName()+");");
- pw.println(" }");
- pw.println("");
pw.println(sd.getSection("fleeterpreter"));
pw.println("}");
pw.flush();
InterpreterDock(InterpreterShip ship, DockDescription bbd) {
super(ship, bbd);
+ ship.ports.put(bbd.getName(), this);
}
public Path getPath(Destination d, BitVector signal) { return new InterpreterPath(this, (InterpreterDestination)d, signal); }
/** a ship, which belongs to a fleet and which may have many ports */
abstract class InterpreterShip extends FleetTwoShip {
+ LinkedHashMap<String,InterpreterDock> ports = new LinkedHashMap<String,InterpreterDock>();
+
/** You should instantiate a bunch of Inboxes and Outboxes in your constructor */
public InterpreterShip(Interpreter fleet, ShipDescription sd) {
super(fleet, sd);
}
- private HashMap<String,InterpreterDock> ports = new HashMap<String,InterpreterDock>();
- public Iterator<Dock> iterator() { return (Iterator<Dock>)(Object)ports.values().iterator(); }
+ public Iterator<Dock> iterator() {
+ return (Iterator<Dock>)(Object)ports.values().iterator();
+ }
/**
* Override this method, check inboxes for the data you need, and
service();
}
- protected void addDock(String name, InterpreterDock port) {
- ports.put(name, port);
- }
-
public void reset() {
for(InterpreterDock p : ports.values())
p.reset();