add ShipPool.java
[fleet.git] / src / edu / berkeley / fleet / ir / ShipPool.java
1 package edu.berkeley.fleet.ir;
2 import java.util.*;
3 import java.net.*;
4 import edu.berkeley.fleet.two.*;
5 import edu.berkeley.fleet.api.*;
6 import edu.berkeley.fleet.api.Instruction.*;
7 import edu.berkeley.fleet.api.Instruction.Set;
8 import edu.berkeley.fleet.api.Instruction.Set.*;
9 import static edu.berkeley.fleet.util.BitManipulations.*;
10
11 public class ShipPool implements Iterable<Ship> {
12
13     public final Fleet fleet;
14
15     public ShipPool(Fleet fleet) { this.fleet = fleet; }
16
17     private HashSet<Ship>             allocatedShips       = new HashSet<Ship>();
18
19     public Iterator<Ship> iterator() { return allocatedShips.iterator(); }
20
21     public Ship allocateShip(String name) {
22         for(int i=0; ; i++) {
23             Ship ship = fleet.getShip(name, i);
24             if (ship==null)
25                 throw new RuntimeException("no more ships of type " + name);
26             if (allocatedShips.contains(ship)) continue;
27             allocatedShips.add(ship);
28             return ship;
29         }
30     }
31 }