add another class
[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         for(int i=0;i<task.numParameters();i++) {
26             this.parameterset[i]=new HashSet<FlagTagState>();
27             TagExpressionList tel=td.getTag(td.getParameter(i));
28             for(int j=0;j<tel.numTags();j++) {
29                 TempDescriptor tagtmp=tel.getTemp(j);
30                 if (!tags.contains(tagtmp))
31                     tags.add(tagtmp);
32             }
33         }
34     }
35     
36     public TaskQueueIterator enqueue(int index, FlagTagState fts) {
37         parameterset[index].add(fts);
38         if (!map.containsKey(fts.fs)) {
39             map.put(fts.fs, new Vector<FlagTagState>());
40         }
41         map.get(fts.fs).add(fts);
42         return new TaskQueueIterator(this, index, fts);
43     }
44 }