1 package Analysis.OwnershipAnalysis;
9 public class ChangeTupleSet extends Canonical {
11 private HashSet<ChangeTuple> changeTuples;
13 public ChangeTupleSet() {
14 changeTuples = new HashSet<ChangeTuple>();
17 public ChangeTupleSet(ChangeTuple ct) {
22 public ChangeTupleSet(ChangeTupleSet cts) {
23 changeTuples = (HashSet<ChangeTuple>)cts.changeTuples.clone();
26 public ChangeTupleSet makeCanonical() {
27 return (ChangeTupleSet) Canonical.makeCanonical(this);
30 public Iterator iterator() {
31 return changeTuples.iterator();
35 return changeTuples.size();
38 public ChangeTupleSet union(ChangeTupleSet ctsIn) {
41 ChangeTupleSet ctsOut = new ChangeTupleSet(this);
42 ctsOut.changeTuples.addAll(ctsIn.changeTuples);
43 return ctsOut.makeCanonical();
46 public ChangeTupleSet union(ChangeTuple ctIn) {
49 ChangeTupleSet ctsOut = new ChangeTupleSet(this);
50 ctsOut.changeTuples.add(ctIn);
51 return ctsOut.makeCanonical();
54 public boolean isEmpty() {
55 return changeTuples.isEmpty();
58 public boolean isSubset(ChangeTupleSet ctsIn) {
60 return ctsIn.changeTuples.containsAll(this.changeTuples);
63 public boolean equals(Object o) {
68 if( !(o instanceof ChangeTupleSet) ) {
72 ChangeTupleSet cts = (ChangeTupleSet) o;
73 return changeTuples.equals(cts.changeTuples);
76 public int hashCode() {
77 return changeTuples.hashCode();
80 public String toString() {
83 Iterator i = this.iterator();
84 while( i.hasNext() ) {