implement am26 support for constants
[fleet.git] / src / edu / berkeley / fleet / interpreter / InterpreterShip.java
index d4465ab..6bfe2b2 100644 (file)
@@ -1,26 +1,35 @@
 package edu.berkeley.fleet.interpreter;
 import edu.berkeley.fleet.api.*;
-
-import edu.berkeley.fleet.api.*;
+import edu.berkeley.fleet.doc.*;
 import java.util.*;
 import java.io.*;
 
 /** a ship, which belongs to a fleet and which may have many ports */
-public abstract class InterpreterShip extends Ship {
+abstract class InterpreterShip extends Ship {
         
     /** You should instantiate a bunch of Inboxes and Outboxes in your constructor */
-    public InterpreterShip(Interpreter fleet, String name) { this.fleet = fleet; }
+    public InterpreterShip(Interpreter fleet, String name, String type) {
+        this.fleet = fleet;
+        this.type = type;
+    }
 
     private Interpreter  fleet;
-
-    // this is dumb, the fpga fleet currently requires these in declaration-order; it shouldn't
-    private ArrayList<InterpreterBenkoBox> portlist = new ArrayList<InterpreterBenkoBox>();
+    private String       type;
     private HashMap<String,InterpreterBenkoBox> ports = new HashMap<String,InterpreterBenkoBox>();
 
-    public Iterable<BenkoBox> getBenkoBoxes() { return (Iterable<BenkoBox>)(Object)portlist; }
-    public String getType()                   { return getClass().getSimpleName(); }
-    public Fleet  getFleet()                  { return fleet; }
-    public Interpreter  getInterpreter()      { return fleet; }
+    public Iterable<BenkoBox> getBenkoBoxes()  { return (Iterable<BenkoBox>)(Object)ports.values(); }
+    public String             getType()        { return type; }
+    public Fleet              getFleet()       { return fleet; }
+    public Interpreter        getInterpreter() { return fleet; }
+
+    public void setShipDescription(ShipDescription sd) {
+        for(InterpreterBenkoBox ibb : ports.values()) {
+            for(BenkoBoxDescription bbd : sd) {
+                if (bbd.getName().equals(ibb.getName()))
+                    ibb.setDescription(bbd);
+            }
+        }
+    }
 
     /**
      *  Override this method, check inboxes for the data you need, and
@@ -34,7 +43,9 @@ public abstract class InterpreterShip extends Ship {
         service();
     }
 
-    void addBenkoBox(String name, InterpreterBenkoBox port) { ports.put(name, port); portlist.add(port); }
+    protected void addBenkoBox(String name, InterpreterBenkoBox port) {
+        ports.put(name, port);
+    }
 
     public void shutdown() {
         for(InterpreterBenkoBox p : ports.values())