add PCLOC annotations. all three benchmarks are type-checked now.
[IRC.git] / Robust / src / Analysis / TaskStateAnalysis / FlagComparator.java
1 package Analysis.TaskStateAnalysis;
2 import java.util.Hashtable;
3 import java.util.Comparator;
4 import java.util.Iterator;
5 import IR.FlagDescriptor;
6
7 /**Note: this comparator imposes orderings that are inconsistent with equals.*/
8
9 public class FlagComparator implements Comparator {
10   Hashtable flaginfo;
11   public FlagComparator(Hashtable flaginfo) {
12     this.flaginfo=flaginfo;
13   }
14
15   public int compare(Object o1, Object o2) {
16     int fs1=getFlagInt((FlagState)o1);
17     int fs2=getFlagInt((FlagState)o2);
18     return fs1-fs2;
19   }
20
21   public int getFlagInt(FlagState fs) {
22     int flagid=0;
23     for(Iterator flags = fs.getFlags(); flags.hasNext(); ) {
24       FlagDescriptor flagd = (FlagDescriptor)flags.next();
25       int id=1<<((Integer)flaginfo.get(flagd)).intValue();
26       flagid|=id;
27     }
28     return flagid;
29   }
30 }