Add generating scheduling algorithm
[IRC.git] / Robust / src / Analysis / TaskStateAnalysis / FlagInfo.java
1 package Analysis.TaskStateAnalysis;
2 import IR.*;
3 import IR.Tree.*;
4 import IR.Flat.*;
5 import java.util.*;
6 import java.io.File;
7 import java.io.FileWriter;
8 import java.io.FileOutputStream;
9
10
11 public class FlagInfo {
12     private Hashtable<ClassDescriptor, FlagDescriptor[]> flags;
13     private State state;
14
15     public FlagInfo(State state) {
16         this.state=state;
17         flags=new Hashtable<ClassDescriptor, FlagDescriptor[]>();
18         getFlagsfromClasses();
19     }
20
21     public FlagDescriptor[] getFlags(ClassDescriptor cd) {
22         return flags.get(cd);
23     }
24
25     /** Builds a table of flags for each class in the Bristlecone
26      *  program.  It creates one hashtables: one which holds the
27      *  ClassDescriptors and arrays of * FlagDescriptors as key-value
28      *  pairs. */
29
30     private void getFlagsfromClasses() {
31         for(Iterator it_classes=state.getClassSymbolTable().getDescriptorsIterator();it_classes.hasNext();) {
32             ClassDescriptor cd = (ClassDescriptor)it_classes.next();
33             Vector vFlags=new Vector();
34             FlagDescriptor flag[];
35             int ctr=0;
36             
37             /* Adding the flags of the super class */
38             ClassDescriptor tmp=cd;
39             while(tmp!=null) {
40                 for(Iterator it_cflags=tmp.getFlags();it_cflags.hasNext();) {   
41                     FlagDescriptor fd = (FlagDescriptor)it_cflags.next();
42                     vFlags.add(fd);
43                 }
44                 tmp=tmp.getSuperDesc();
45             }
46
47             flag=new FlagDescriptor[vFlags.size()];
48             
49             flags.put(cd,flag);
50         }
51     }
52 }