start of new file
[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 }