changes
[IRC.git] / Robust / src / Analysis / TaskStateAnalysis / FlagState.java
1 package Analysis.TaskStateAnalysis;
2 import Analysis.TaskStateAnalysis.*;
3 import IR.*;
4 import IR.Tree.*;
5 import IR.Flat.*;
6 import java.util.*;
7
8
9
10
11
12 public class FlagState
13 {
14         Hashtable flagstate;
15
16         public FlagState(FlagDescriptor[] flags)
17         {
18                 flagstate=new Hashtable(flags.length);
19                 {
20                         for (int i=0; i < flags.length; i++)
21                         {
22                                 flagstate.put(flags[i],new Boolean(false));
23                         }
24                 }
25         }
26
27         public FlagState(Hashtable flagstate)
28         {
29                 this.flagstate = new Hashtable(flagstate);
30         }
31
32         public Hashtable getStateTable()
33         {
34                 return  flagstate;
35         }
36
37         public void put(FlagDescriptor fd, Boolean status)
38         {
39                 flagstate.put(fd,status);
40         }
41         public boolean get(FlagDescriptor fd)
42         {
43                 if (! flagstate.containsKey(fd))
44                 {
45                         return false;
46                 }
47                 else
48                 {
49                         return ((Boolean)(flagstate.get(fd))).booleanValue();
50                 }
51         }
52
53
54         public String toString()
55         {
56                 StringBuffer sb = new StringBuffer(flagstate.size());
57                 Enumeration e = flagstate.keys();
58
59                 while (e.hasMoreElements())
60                 {
61                         if (((Boolean)(flagstate.get((FlagDescriptor)e.nextElement()))).booleanValue())
62                                 sb.append(1);
63                         else
64                                 sb.append(0);
65                 }
66                 return new String(sb);
67         }
68
69         public String toString(FlagDescriptor[] flags)
70         {
71                 StringBuffer sb = new StringBuffer(flagstate.size());
72
73                 Enumeration e;
74
75                 for(int i=0;i < flags.length; i++)
76                 {
77                         e = flagstate.keys();
78
79                         while (e.hasMoreElements())
80                         {
81                                 FlagDescriptor fdtemp=(FlagDescriptor)e.nextElement();
82                                 if( flags[i] == fdtemp)
83                                 {
84                                         if (((Boolean)(flagstate.get(fdtemp))).booleanValue())
85                                                 sb.append(1);
86                                         else
87                                                 sb.append(0);
88                                 }
89                         }
90                 }
91                 return new String(sb);
92         }
93
94         public Enumeration getFlags()
95         {
96                 return flagstate.keys();
97         }
98
99         public boolean isEqual(FlagState fs)
100         {
101                 Enumeration en = fs.getFlags();
102                 while(en.hasMoreElements())
103                 {
104
105                         FlagDescriptor flag=(FlagDescriptor)en.nextElement();
106
107                         //System.out.println(flag.toString()+" "+fs.get(flag)+"   "+this.get(flag));
108                         if (fs.get(flag) != this.get(flag))
109                             return false;
110                 }
111                 return true;
112         }
113 }