switch to spaces only..
[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 }