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