1 package Analysis.OwnershipAnalysis;
7 public abstract class OwnershipNode {
9 protected HashSet<ReferenceEdge> referencees;
11 public OwnershipNode() {
12 referencees = new HashSet<ReferenceEdge>();
16 public Iterator<ReferenceEdge> iteratorToReferencees() {
17 return referencees.iterator();
20 public Iterator<ReferenceEdge> iteratorToReferenceesClone() {
21 HashSet<ReferenceEdge> clone = (HashSet<ReferenceEdge>)referencees.clone();
22 return clone.iterator();
25 public int getNumReferencees() {
26 return referencees.size();
29 public void addReferencee(ReferenceEdge edge) {
32 referencees.add(edge);
35 public void removeReferencee(ReferenceEdge edge) {
37 assert referencees.contains(edge);
39 referencees.remove(edge);
42 public ReferenceEdge getReferenceTo(HeapRegionNode hrn,
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) ) {