1 package edu.berkeley.fleet;
7 private static int max_allocated_descriptor = 1;
8 private static HashMap<Integer,CodeBag> codeBagsByDescriptor = new HashMap<Integer,CodeBag>();
10 public static CodeBag getCodeBagByDescriptor(int descriptor) {
11 return codeBagsByDescriptor.get(descriptor);
14 private final int descriptor;
15 private final CodeBag parent;
16 private ArrayList<Dispatchable> dispatchables = new ArrayList<Dispatchable>();
17 private HashMap<String,CodeBag> codeBags = new HashMap<String,CodeBag>();
19 public CodeBag(CodeBag parent, String name) {
21 this.descriptor = max_allocated_descriptor++;
22 codeBagsByDescriptor.put(descriptor, this);
23 if (parent != null && name != null)
24 parent.add(name, this);
27 public void dispatch(Fleet fleet) {
28 for(Dispatchable d : dispatchables) {
34 public void add(Dispatchable instr) {
35 dispatchables.add(instr);
38 public void add(String name, CodeBag instr) {
39 codeBags.put(name, instr);
42 public int getDescriptor() {
46 public CodeBag getCodeBag(String name) {
47 CodeBag ret = codeBags.get(name);
48 if (ret != null) return ret;
49 if (parent==null) return null;
50 return parent.getCodeBag(name);
53 public String toString() {
54 StringBuffer ret = new StringBuffer();
55 for(Dispatchable d : dispatchables) {
59 for(String n : codeBags.keySet()) {
61 ret.append(codeBags.get(n));
64 return "{\n "+Log.indent(ret.toString(), " ")+"\n}";