Fix tabbing.... Please fix your editors so they do tabbing correctly!!! (Spaces...
[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 HashSet<ReferenceEdge> referencees;
10
11   public OwnershipNode() {
12     referencees = new HashSet<ReferenceEdge>();
13   }
14
15
16   public Iterator<ReferenceEdge> iteratorToReferencees() {
17     return referencees.iterator();
18   }
19
20   public Iterator<ReferenceEdge> iteratorToReferenceesClone() {
21     HashSet<ReferenceEdge> clone = (HashSet<ReferenceEdge>)referencees.clone();
22     return clone.iterator();
23   }
24
25   public int getNumReferencees() {
26     return referencees.size();
27   }
28
29   public void addReferencee(ReferenceEdge edge) {
30     assert edge != null;
31
32     referencees.add(edge);
33   }
34
35   public void removeReferencee(ReferenceEdge edge) {
36     assert edge != null;
37     assert referencees.contains(edge);
38
39     referencees.remove(edge);
40   }
41
42   public ReferenceEdge getReferenceTo(HeapRegionNode hrn,
43                                       TypeDescriptor type,
44                                       String field) {
45     assert hrn != null;
46
47     Iterator<ReferenceEdge> itrEdge = referencees.iterator();
48     while( itrEdge.hasNext() ) {
49       ReferenceEdge edge = itrEdge.next();
50       if( edge.getDst().equals(hrn) &&
51           edge.typeEquals(type) &&
52           edge.fieldEquals(field) ) {
53         return edge;
54       }
55     }
56
57     return null;
58   }
59 }