changes.
[IRC.git] / Robust / src / Analysis / OoOJava / VariableSourceToken.java
1 package Analysis.OoOJava;
2
3 import IR.*;
4 import IR.Flat.*;
5 import java.util.*;
6 import java.io.*;
7
8 public class VariableSourceToken {
9
10   private Set<TempDescriptor> refVars;
11   private FlatSESEEnterNode sese;
12   private Integer seseAge;
13   private TempDescriptor addrVar;
14
15   public VariableSourceToken(Set<TempDescriptor> refVars,
16                              FlatSESEEnterNode sese,
17                              Integer seseAge,
18                              TempDescriptor addrVar
19                              ) {
20     this.refVars = refVars;
21     this.sese    = sese;
22     this.seseAge = seseAge;
23     this.addrVar = addrVar;
24   }
25
26   public void setRefVars(Set<TempDescriptor> refVars) {
27     this.refVars=refVars;
28   }
29
30   public Set<TempDescriptor> getRefVars() {
31     return refVars;
32   }
33
34   public FlatSESEEnterNode getSESE() {
35     return sese;
36   }
37
38   public Integer getAge() {
39     return seseAge;
40   }
41
42   public TempDescriptor getAddrVar() {
43     return addrVar;
44   }
45
46   public VariableSourceToken copy() {
47     return new VariableSourceToken(refVars,
48                                    sese,
49                                    new Integer(seseAge),
50                                    addrVar);
51   }
52
53   public boolean equals(Object o) {
54     if( o == null ) {
55       return false;
56     }
57
58     if( !(o instanceof VariableSourceToken) ) {
59       return false;
60     }
61
62     VariableSourceToken vst = (VariableSourceToken) o;
63
64     // the reference vars have no bearing on equality
65     return sese.equals(vst.sese) &&
66            addrVar.equals(vst.addrVar) &&
67            seseAge.equals(vst.seseAge);
68   }
69
70   public int hashCode() {
71     // the reference vars have no bearing on hashCode
72     return (sese.hashCode() << 3) * (addrVar.hashCode() << 4) ^ seseAge.intValue();
73   }
74
75
76   public String toString() {
77     return refVars+"\tref "+addrVar+"\t@"+sese.toPrettyString()+"("+seseAge+")";
78   }
79 }