More pieces for new version of analysis
[IRC.git] / Robust / src / Analysis / OwnershipAnalysis / MethodContext.java
1 package Analysis.OwnershipAnalysis;
2
3 import IR.*;
4 import IR.Flat.*;
5 import java.util.*;
6 import java.io.*;
7
8 public class MethodContext {
9
10   private Descriptor descMethodOrTask;
11   private Set aliasedParameterIndices;
12
13
14   public MethodContext( Descriptor d ) {
15     descMethodOrTask = d;
16     aliasedParameterIndices = new HashSet();
17   }
18
19   public MethodContext( Descriptor d, Set a ) {
20     descMethodOrTask = d;
21     aliasedParameterIndices = a;
22   }
23
24
25   public Descriptor getDescriptor() {
26     return descMethodOrTask;
27   }
28
29   public Set getAliasedParamIndices() {
30     return aliasedParameterIndices;
31   }  
32
33
34   public boolean equals(Object o) {
35     if( o == null ) {
36       return false;
37     }
38
39     if( !( o instanceof MethodContext) ) {
40       return false;
41     }
42
43     MethodContext mc = (MethodContext) o;
44
45     return mc.descMethodOrTask.equals( descMethodOrTask ) &&
46       mc.aliasedParameterIndices.equals( aliasedParameterIndices );
47   }
48   
49   public int hashCode() {
50     return descMethodOrTask.hashCode() ^ 
51       aliasedParameterIndices.hashCode();
52   }
53
54
55   private String getAliasString() {
56     if( aliasedParameterIndices.isEmpty() ) {
57       return "";
58     }
59
60     String s = "aliased";
61     Iterator i = aliasedParameterIndices.iterator();
62     while( i.hasNext() ) {
63       s += i.next();
64       if( i.hasNext() ) {
65         s += "a";
66       }
67     }
68
69     return s;
70   }
71
72   public String toString() {
73     if( descMethodOrTask instanceof TaskDescriptor ) {
74       return descMethodOrTask.getSymbol()+
75              descMethodOrTask.getNum()+
76              getAliasString();
77
78     } else {
79       MethodDescriptor md = (MethodDescriptor) descMethodOrTask;
80       return md.getClassMethodName()+
81              md.getNum()+
82              getAliasString();
83     }
84   }
85 }