1 package Analysis.DisjointAnalysis;
7 public abstract class ReferenceSourceNode {
9 protected HashSet<RefEdge> referencees;
11 public ReferenceSourceNode() {
12 referencees = new HashSet<RefEdge>();
16 public Iterator<RefEdge> iteratorToReferencees() {
17 return referencees.iterator();
20 public Iterator<RefEdge> iteratorToReferenceesClone() {
21 HashSet<RefEdge> clone = (HashSet<RefEdge>)referencees.clone();
22 return clone.iterator();
25 public int getNumReferencees() {
26 return referencees.size();
29 public void addReferencee( RefEdge edge ) {
31 referencees.add( edge );
34 public void removeReferencee( RefEdge edge ) {
36 assert referencees.contains( edge );
37 referencees.remove( edge );
40 public RefEdge getReferenceTo(HeapRegionNode hrn,
45 Iterator<RefEdge> itrEdge = referencees.iterator();
46 while( itrEdge.hasNext() ) {
47 RefEdge edge = itrEdge.next();
48 if( edge.getDst().equals(hrn) &&
49 edge.typeEquals( type ) &&
50 edge.fieldEquals( field ) ) {