1 package Analysis.TaskStateAnalysis;
2 import Analysis.TaskStateAnalysis.*;
9 public class TagState extends GraphNode {
10 private TagDescriptor tag;
11 private ClassDescriptor cd;
12 private Hashtable<FlagState, Integer> flags;
13 public static final int KLIMIT=2;
14 public HashSet<TaskDescriptor> sourceset;
20 public TagState(ClassDescriptor cd) {
25 public void addSource(TaskDescriptor td) {
29 public TagState(TagDescriptor tag) {
31 this.flags=new Hashtable<FlagState, Integer>();
32 this.sourceset=new HashSet,TaskDescriptor>();
35 public TagDescriptor getTag() {
39 public TagState[] clearFS(FlagState fs) {
41 if (flags.containsKey(fs))
42 num=flags.get(fs).intValue();
46 TagState ts=new TagState(tag);
47 ts.flags.putAll(flags);
48 ts.flags.put(fs, new Integer(num));
51 return new TagState[] {ts, this};
53 return new TagState[] {ts};
56 public TagState[] addnewFS(FlagState fs) {
58 if (flags.containsKey(fs))
59 num=flags.get(fs).intValue();
63 TagState ts=new TagState(tag);
64 ts.flags.putAll(flags);
65 ts.flags.put(fs, new Integer(num));
66 return new TagState[] {ts};
69 public TagState[] addFS(FlagState fs) {
71 if (flags.containsKey(fs))
72 num=flags.get(fs).intValue();
76 TagState ts=new TagState(tag);
77 ts.flags.putAll(flags);
78 ts.flags.put(fs, new Integer(num));
80 return new TagState[] {ts};
82 return new TagState[] {this, ts};
85 public boolean containsFS(FlagState fs) {
86 return flags.containsKey(fs);
89 public Set<FlagState> getFS() {
90 return flags.keySet();
93 public int hashCode() {
94 int hashcode=flags.hashCode();
96 hashcode^=tag.hashCode();
100 public boolean equals(Object o) {
101 if (o instanceof TagState) {
102 TagState t=(TagState)o;
103 if ((tag==null&&t.tag==null)||
104 (tag!=null&&t.tag!=null&&tag.equals(t.tag))) {
105 return flags.equals(t.flags);