Fixed propagation, different change sets for the x and y branches before a new edge...
[IRC.git] / Robust / src / Analysis / OwnershipAnalysis / TokenTupleSet.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 TokenTupleSet extends Canonical {
10
11     private HashSet<TokenTuple> tokenTuples;
12
13     public TokenTupleSet() {
14         tokenTuples = new HashSet<TokenTuple>();
15     }
16
17     public TokenTupleSet( TokenTuple tt ) {
18         this();
19         tokenTuples.add( tt );
20     }
21
22     public TokenTupleSet( TokenTupleSet tts ) {
23         tokenTuples = (HashSet<TokenTuple>) tts.tokenTuples.clone(); //COPY?!
24     }
25
26     public TokenTupleSet makeCanonical() {
27         return (TokenTupleSet) Canonical.makeCanonical( this );
28     }
29
30     public Iterator iterator() {
31         return tokenTuples.iterator();
32     }
33
34     public TokenTupleSet union( TokenTupleSet ttsIn ) {
35         TokenTupleSet ttsOut = new TokenTupleSet( this );
36         ttsOut.tokenTuples.addAll( ttsIn.tokenTuples );
37         return ttsOut.makeCanonical();
38     }
39
40     public boolean isEmpty() {
41         return tokenTuples.isEmpty();
42     }
43
44     public boolean containsTuple( TokenTuple tt ) {
45         return tokenTuples.contains( tt );
46     }
47
48     public boolean equals( Object o ) {
49         if( !(o instanceof TokenTupleSet) ) {
50             return false;
51         }
52
53         TokenTupleSet tts = (TokenTupleSet) o;
54         return tokenTuples.equals( tts.tokenTuples );
55     }
56
57     public int hashCode() {
58         return tokenTuples.hashCode();
59     }
60
61     // this should be a hash table so we can do this by key
62     public boolean containsToken( Integer token ) {
63         Iterator itr = tokenTuples.iterator();
64         while( itr.hasNext() ) {
65             TokenTuple tt = (TokenTuple) itr.next();
66             if( token.equals( tt.getToken() ) ) {
67                 return true;
68             }
69         }
70         return false;
71     }
72
73     public String toString() {
74         return tokenTuples.toString();
75     }
76 }