import IR.Flat.*;
import java.util.*;
-public class TagWrapper {
+public class TagWrapper implements Wrapper {
TagState initts;
- Vector<TagState> ts;
+ HashSet<TagState> ts;
public TagWrapper(TagState ts) {
this.initts=ts;
- this.ts=new Vector<TagState>();
- this.ts.addAll(ts);
+ this.ts=new HashSet<TagState>();
+ this.ts.add(ts);
}
- public TagWrapper clone() {
- TagWrapper tw=new TagWrapper();
- tw.initts=initts;
- tw.ts=ts.clone();
- return tw;
+ private TagWrapper() {
}
- public boolean equals(Object o) {
- if (o instanceof TagWrapper) {
- TagWrapper tw=(TagWrapper)o;
- return tw.initts.equals(initts)&&tw.ts.equals(ts);
- }
- return false;
+ public TagState getState() {
+ assert(ts.size()==1);
+ return ts.iterator().next();
}
- public int hashCode() {
- return initts.hashCode()^ts.hashCode();
+ public TagWrapper clone() {
+ TagWrapper tw=new TagWrapper();
+ tw.initts=initts;
+ tw.ts=(HashSet<TagState>)ts.clone();
+ return tw;
}
}