switch to spaces only..
[IRC.git] / Robust / src / Analysis / TaskStateAnalysis / TaskQueue.java
1 package Analysis.TaskStateAnalysis;
2 import IR.*;
3 import IR.Tree.*;
4 import IR.Flat.*;
5 import java.util.*;
6
7 public class TaskQueue {
8   protected TaskDescriptor task;
9   protected HashSet<FlagTagState> [] parameterset;
10   protected Vector<TempDescriptor> tags;
11   protected Hashtable <FlagState, Vector<FlagTagState>> map;
12
13   public int numParameters() {
14     return parameterset.length;
15   }
16
17   public TaskDescriptor getTask() {
18     return task;
19   }
20
21   public TaskQueue(TaskDescriptor td) {
22     this.task=td;
23     this.parameterset=(HashSet<FlagTagState>[]) new HashSet[task.numParameters()];
24     this.map=new Hashtable<FlagState, Vector<FlagTagState>>();
25     this.tags=new Vector<TempDescriptor>();
26     for(int i=0; i<task.numParameters(); i++) {
27       this.parameterset[i]=new HashSet<FlagTagState>();
28       TagExpressionList tel=td.getTag(td.getParameter(i));
29       if (tel!=null)
30         for(int j=0; j<tel.numTags(); j++) {
31           TempDescriptor tagtmp=tel.getTemp(j);
32           if (!tags.contains(tagtmp))
33             tags.add(tagtmp);
34         }
35     }
36   }
37
38   public TaskQueueIterator enqueue(int index, FlagTagState fts) {
39     parameterset[index].add(fts);
40     if (!map.containsKey(fts.fs)) {
41       map.put(fts.fs, new Vector<FlagTagState>());
42     }
43     map.get(fts.fs).add(fts);
44     return new TaskQueueIterator(this, index, fts);
45   }
46 }