Changes:
[IRC.git] / Robust / src / Analysis / TaskStateAnalysis / TagBinding.java
diff --git a/Robust/src/Analysis/TaskStateAnalysis/TagBinding.java b/Robust/src/Analysis/TaskStateAnalysis/TagBinding.java
new file mode 100644 (file)
index 0000000..6f8bbc5
--- /dev/null
@@ -0,0 +1,65 @@
+package Analysis.TaskStateAnalysis;
+import IR.MethodDescriptor;
+import IR.TagDescriptor;
+import Util.GraphNode;
+import java.util.HashSet;
+import java.util.Set;
+
+public class TagBinding extends GraphNode {
+    private MethodDescriptor md;
+    private TagDescriptor[] tdarray;
+    private HashSet allocations;
+
+    public TagBinding(MethodDescriptor md) {
+       this.md=md;
+       tdarray=new TagDescriptor[md.numParameters()];
+       allocations=new HashSet();
+    }
+
+    public String toString() {
+       String st=md.toString();
+       for(int i=0;i<tdarray.length;i++)
+           st+=tdarray[i]+" ";
+       return st;
+    }
+
+    public Set getAllocations() {
+       return allocations;
+    }
+
+    public void setBinding(int i, TagDescriptor td) {
+       tdarray[i]=td;
+    }
+
+    public MethodDescriptor getMethod() {
+       return md;
+    }
+
+    public TagDescriptor getBinding(int i) {
+       return tdarray[i];
+    }
+
+    public boolean equals(Object o) {
+       if (o instanceof TagBinding) {
+           TagBinding tb=(TagBinding)o;
+           if (md!=tb.md)
+               return false;
+           for(int i=0;i<tdarray.length;i++)
+               if (tdarray[i]!=null) {
+                   if (!tdarray[i].equals(tb.tdarray[i]))
+                       return false;
+               } else if(tb.tdarray[i]!=null)
+                   return false;
+       }
+       return false;
+    }
+
+    public int hashCode() {
+       int hashcode=md.hashCode();
+       for(int i=0;i<tdarray.length;i++) {
+           if (tdarray[i]!=null)
+               hashcode^=tdarray[i].hashCode();
+       }
+       return hashcode;
+    }
+}