Added fields to ReferenceEdgeProperties and combed over all classes that need proper...
[IRC.git] / Robust / src / Analysis / OwnershipAnalysis / OwnershipNode.java
1 package Analysis.OwnershipAnalysis;
2
3 import IR.*;
4 import IR.Flat.*;
5 import java.util.*;
6
7 public abstract class OwnershipNode {   
8
9     protected Hashtable <HeapRegionNode, ReferenceEdgeProperties> referencedRegions;
10
11     public OwnershipNode() {
12         referencedRegions = 
13             new Hashtable<HeapRegionNode, ReferenceEdgeProperties>();
14     }
15
16
17     public Iterator setIteratorToReferencedRegions() {
18         Set s = referencedRegions.entrySet();
19         return s.iterator();
20     }
21
22     public Iterator setIteratorToReferencedRegionsClone() {
23         Hashtable ht = (Hashtable) referencedRegions.clone();
24         Set s = ht.entrySet();
25         return s.iterator();
26     }
27
28     public void addReferencedRegion( HeapRegionNode hrn,
29                                      ReferenceEdgeProperties rep ) {
30         assert hrn != null;
31         assert rep != null;
32
33         referencedRegions.put( hrn, rep );
34     }
35
36     public void removeReferencedRegion( HeapRegionNode hrn ) {
37         assert hrn != null;
38         assert referencedRegions.containsKey( hrn );
39
40         referencedRegions.remove( hrn );
41     }
42
43     public ReferenceEdgeProperties getReferenceTo( HeapRegionNode hrn ) {
44         assert hrn != null;
45
46         return referencedRegions.get( hrn );
47     }
48
49
50     abstract public boolean equals( Object o );
51     abstract public int hashCode();
52 }