Broadening implementation for reachability in ownership analysis.
[IRC.git] / Robust / src / Analysis / OwnershipAnalysis / ReachabilitySet.java
1 package Analysis.OwnershipAnalysis;
2
3 import IR.*;
4 import IR.Flat.*;
5 import java.util.*;
6 import java.io.*;
7
8
9 public class ReachabilitySet {
10
11     public HashSet<TokenTupleSet> possibleReachabilities;
12
13     public ReachabilitySet() {
14         possibleReachabilities = new HashSet<TokenTupleSet>();
15     }
16
17     public ReachabilitySet( ReachabilitySet rs ) {
18         possibleReachabilities = (HashSet<TokenTupleSet>) rs.possibleReachabilities.clone(); // again, DEEP COPY?!
19     }
20
21     public ReachabilitySet union( ReachabilitySet rsIn ) {
22         ReachabilitySet rsOut = new ReachabilitySet( this );
23         rsOut.possibleReachabilities.addAll( rsIn.possibleReachabilities );
24         return rsOut;
25     }
26
27     public ReachabilitySet intersection( ReachabilitySet rsIn ) {
28         ReachabilitySet rsOut = new ReachabilitySet();
29
30         Iterator i = this.possibleReachabilities.iterator();
31         while( i.hasNext() ) {
32             TokenTupleSet tts = (TokenTupleSet) i.next();
33             if( rsIn.possibleReachabilities.contains( tts ) ) {
34                 rsOut.possibleReachabilities.add( tts );
35             }
36         }
37
38         return rsOut;
39     }
40
41     /*
42     public ChangeTupleSet unionUpArity( ReachabilitySet rsIn ) {
43        
44     }
45     */
46 }