Broadening implementation for reachability in ownership analysis.
[IRC.git] / Robust / src / Analysis / OwnershipAnalysis / ReachabilitySet.java
index 45dd8407db4a242752288ad0587e4300cbb57046..ecb52ea69b3de800043fcfe5881c5339e6e2800d 100644 (file)
@@ -10,6 +10,37 @@ public class ReachabilitySet {
 
     public HashSet<TokenTupleSet> possibleReachabilities;
 
-    
-    // this one has special union.
-}
\ No newline at end of file
+    public ReachabilitySet() {
+       possibleReachabilities = new HashSet<TokenTupleSet>();
+    }
+
+    public ReachabilitySet( ReachabilitySet rs ) {
+       possibleReachabilities = (HashSet<TokenTupleSet>) rs.possibleReachabilities.clone(); // again, DEEP COPY?!
+    }
+
+    public ReachabilitySet union( ReachabilitySet rsIn ) {
+       ReachabilitySet rsOut = new ReachabilitySet( this );
+       rsOut.possibleReachabilities.addAll( rsIn.possibleReachabilities );
+       return rsOut;
+    }
+
+    public ReachabilitySet intersection( ReachabilitySet rsIn ) {
+       ReachabilitySet rsOut = new ReachabilitySet();
+
+       Iterator i = this.possibleReachabilities.iterator();
+       while( i.hasNext() ) {
+           TokenTupleSet tts = (TokenTupleSet) i.next();
+           if( rsIn.possibleReachabilities.contains( tts ) ) {
+               rsOut.possibleReachabilities.add( tts );
+           }
+       }
+
+       return rsOut;
+    }
+
+    /*
+    public ChangeTupleSet unionUpArity( ReachabilitySet rsIn ) {
+       
+    }
+    */
+}