1 package Analysis.TaskStateAnalysis;
2 import Analysis.TaskStateAnalysis.*;
9 public class TagState extends GraphNode {
10 private TagDescriptor tag;
11 private Hashtable<FlagState, Integer> flags;
12 public static final int KLIMIT=2;
18 public TagState(TagDescriptor tag) {
20 this.flags=new Hashtable<FlagState, Integer>();
23 public TagDescriptor getTag() {
27 public TagState[] addnewFS(FlagState fs) {
29 if (flags.containsKey(fs))
30 num=flags.get(fs).intValue();
34 TagState ts=new TagState(tag);
35 ts.flags.putAll(flags);
36 ts.flags.put(fs, new Integer(num));
37 return new TagState[] {ts};
40 public TagState[] addFS(FlagState fs) {
42 if (flags.containsKey(fs))
43 num=flags.get(fs).intValue();
47 TagState ts=new TagState(tag);
48 ts.flags.putAll(flags);
49 ts.flags.put(fs, new Integer(num));
51 return new TagState[] {ts};
53 return new TagState[] {this, ts};
56 public boolean containsFS(FlagState fs) {
57 return flags.containsKey(fs);
60 public Set<FlagState> getFS() {
61 return flags.keySet();
64 public int hashCode() {
65 int hashcode=flags.hashCode();
67 hashcode^=tag.hashCode();
71 public boolean equals(Object o) {
72 if (o instanceof TagState) {
73 TagState t=(TagState)o;
74 if ((tag==null&&t.tag==null)||
75 (tag!=null&&t.tag!=null&&tag.equals(t.tag))) {
76 return flags.equals(t.flags);