More pieces for new version of analysis
[IRC.git] / Robust / src / Analysis / MLP / GloballyUniqueTokenTuple.java
1 package Analysis.MLP;
2
3 import Analysis.OwnershipAnalysis.Canonical;
4 import Analysis.OwnershipAnalysis.TokenTuple;
5
6 public class GloballyUniqueTokenTuple extends Canonical{
7
8         private Integer token;
9         private boolean isMultiObject;
10         private int arity;
11         private String id;
12
13         public GloballyUniqueTokenTuple(String uniqueID, TokenTuple tt) {
14                 this.id = uniqueID;
15                 this.arity = tt.getArity();
16                 this.token = tt.getToken();
17                 this.isMultiObject = tt.isMultiObject();
18         }
19
20         public boolean isMultiObject() {
21                 return isMultiObject;
22         }
23
24         public int getArity() {
25                 return arity;
26         }
27
28         public int hashCode() {
29                 return id.hashCode() + arity;
30         }
31
32         public String getID() {
33                 return id;
34         }
35
36         public boolean equals(Object o) {
37                 if (o == null) {
38                         return false;
39                 }
40
41                 if (!(o instanceof GloballyUniqueTokenTuple)) {
42                         return false;
43                 }
44
45                 GloballyUniqueTokenTuple tt = (GloballyUniqueTokenTuple) o;
46
47                 return id.equals(tt.getID()) && arity == tt.getArity();
48         }
49
50         public String toString() {
51                 String s = id;
52
53                 if (isMultiObject) {
54                         s += "M";
55                 }
56
57                 if (arity == TokenTuple.ARITY_ZEROORMORE) {
58                         s += "*";
59                 } else if (arity == TokenTuple.ARITY_ONEORMORE) {
60                         s += "+";
61                 }
62
63                 return s;
64         }
65
66 }