Added reachability classes, all of which are extensions of Canonical such that
[IRC.git] / Robust / src / Analysis / OwnershipAnalysis / ChangeTupleSet.java
index 5593285b1ce5a2be9785e6850e5f54cc2d12736f..afbd04052c87aa67229867b29e4ddc1c93bdf26a 100644 (file)
@@ -6,7 +6,7 @@ import java.util.*;
 import java.io.*;
 
 
-public class ChangeTupleSet {
+public class ChangeTupleSet extends Canonical {
 
     private HashSet<ChangeTuple> changeTuples;
 
@@ -23,6 +23,10 @@ public class ChangeTupleSet {
        changeTuples = (HashSet<ChangeTuple>) cts.changeTuples.clone(); //COPY?!
     }
 
+    public ChangeTupleSet makeCanonical() {
+       return (ChangeTupleSet) Canonical.makeCanonical( this );
+    }
+
     public Iterator iterator() {
        return changeTuples.iterator();
     }
@@ -30,13 +34,26 @@ public class ChangeTupleSet {
     public ChangeTupleSet union( ChangeTupleSet ctsIn ) {
        ChangeTupleSet ctsOut = new ChangeTupleSet( this );
        ctsOut.changeTuples.addAll( ctsIn.changeTuples );
-       return ctsOut;
+       return ctsOut.makeCanonical();
     }
 
     public boolean isSubset( ChangeTupleSet ctsIn ) {
        return ctsIn.changeTuples.containsAll( this.changeTuples );
     }
 
+    public boolean equals( Object o ) {
+       if( !(o instanceof ChangeTupleSet) ) {
+           return false;
+       }
+
+       ChangeTupleSet cts = (ChangeTupleSet) o;
+       return changeTuples.equals( cts.changeTuples );
+    }
+
+    public int hashCode() {
+       return changeTuples.hashCode();
+    }
+
     public String toString() {
        String s = "[";