From e0f36c04202806e6a08c99911ee02eeb60cc23c6 Mon Sep 17 00:00:00 2001 From: adam Date: Mon, 3 Nov 2008 10:25:08 +0100 Subject: [PATCH] add ShipPool.java --- src/edu/berkeley/fleet/ir/ShipPool.java | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/edu/berkeley/fleet/ir/ShipPool.java diff --git a/src/edu/berkeley/fleet/ir/ShipPool.java b/src/edu/berkeley/fleet/ir/ShipPool.java new file mode 100644 index 0000000..07c0768 --- /dev/null +++ b/src/edu/berkeley/fleet/ir/ShipPool.java @@ -0,0 +1,31 @@ +package edu.berkeley.fleet.ir; +import java.util.*; +import java.net.*; +import edu.berkeley.fleet.two.*; +import edu.berkeley.fleet.api.*; +import edu.berkeley.fleet.api.Instruction.*; +import edu.berkeley.fleet.api.Instruction.Set; +import edu.berkeley.fleet.api.Instruction.Set.*; +import static edu.berkeley.fleet.util.BitManipulations.*; + +public class ShipPool implements Iterable { + + public final Fleet fleet; + + public ShipPool(Fleet fleet) { this.fleet = fleet; } + + private HashSet allocatedShips = new HashSet(); + + public Iterator iterator() { return allocatedShips.iterator(); } + + public Ship allocateShip(String name) { + for(int i=0; ; i++) { + Ship ship = fleet.getShip(name, i); + if (ship==null) + throw new RuntimeException("no more ships of type " + name); + if (allocatedShips.contains(ship)) continue; + allocatedShips.add(ship); + return ship; + } + } +} -- 1.7.10.4