Added reachability to simple edge cases.
[IRC.git] / Robust / src / Analysis / OwnershipAnalysis / ReferenceEdgeProperties.java
1 package Analysis.OwnershipAnalysis;
2
3 public class ReferenceEdgeProperties {
4
5     public ReferenceEdgeProperties() {
6         this.isUnique                = false;
7         this.isInitialParamReflexive = false;
8         this.beta                    = new ReachabilitySet();
9     }    
10
11     public ReferenceEdgeProperties( boolean isUnique ) {
12         this.isUnique                = isUnique;
13         this.isInitialParamReflexive = false;
14         this.beta                    = new ReachabilitySet();
15     }
16
17     public ReferenceEdgeProperties( boolean isUnique,
18                                     boolean isInitialParamReflexive ) {
19         this.isUnique                = isUnique;
20         this.isInitialParamReflexive = isInitialParamReflexive;
21         this.beta                    = new ReachabilitySet();
22     }
23
24     public ReferenceEdgeProperties( boolean         isUnique,
25                                     boolean         isInitialParamReflexive,
26                                     ReachabilitySet beta) {
27         this.isUnique                = isUnique;
28         this.isInitialParamReflexive = isInitialParamReflexive;
29         this.beta                    = beta;
30     }
31
32
33     public ReferenceEdgeProperties copy() {
34         return new ReferenceEdgeProperties( isUnique,
35                                             isInitialParamReflexive,
36                                             beta );
37     }
38
39
40     protected boolean isUnique;
41     public boolean isUnique() {
42         return isUnique;
43     }
44     public void setIsUnique( boolean isUnique ) {
45         this.isUnique = isUnique;
46     }
47
48
49     protected boolean isInitialParamReflexive;
50     public boolean isInitialParamReflexive() {
51         return isInitialParamReflexive;
52     }
53     public void setIsInitialParamReflexive( boolean isInitialParamReflexive ) {
54         this.isInitialParamReflexive = isInitialParamReflexive;
55     }
56
57
58     protected ReachabilitySet beta;
59     public ReachabilitySet getBeta() {
60         return beta;
61     }
62     public void setBeta( ReachabilitySet beta ) {
63         this.beta = beta;
64     }
65
66     public boolean equals( ReferenceEdgeProperties rep ) {
67         return isUnique                == rep.isUnique()                &&
68                isInitialParamReflexive == rep.isInitialParamReflexive();
69     }
70
71     public String getBetaString() {
72         return beta.toStringEscapeNewline();
73     }
74     
75     public String toEdgeLabelString() {
76         String edgeLabel = "";
77         /*
78         if( rep.isUnique() ) {
79           edgeLabel += "Unq";
80         }
81         */
82         if( isInitialParamReflexive ) {
83             edgeLabel += "Rfx\\n";
84         }
85         edgeLabel += getBetaString();
86         return edgeLabel;
87     }
88 }