1 salcianu 1.1.2.17 // PAEdgeSet.java, created Fri Jun 30 14:25:53 2000 by salcianu
  2 cananian 1.1.2.19 // Copyright (C) 2000 Alexandru SALCIANU <salcianu@retezat.lcs.mit.edu>
  3 salcianu 1.1.2.1  // Licensed under the terms of the GNU GPL; see COPYING for details.
  4 salcianu 1.1.2.1  package harpoon.Analysis.PointerAnalysis;
  5 salcianu 1.1.2.1  
  6 salcianu 1.1.2.1  import java.util.Map;
  7 salcianu 1.1.2.17 import java.util.Collection;
  8 salcianu 1.1.2.17 import java.util.Collections;
  9 salcianu 1.1.2.1  import java.util.Iterator;
 10 salcianu 1.1.2.17 import java.util.Set;
 11 salcianu 1.1.2.9  
 12 salcianu 1.1.2.18 import harpoon.Util.DataStructs.Relation;
 13 salcianu 1.1.2.18 
 14 salcianu 1.1.2.1  import harpoon.Temp.Temp;
 15 salcianu 1.1.2.1  
 16 salcianu 1.1.2.17 
 17 salcianu 1.1.2.1  /**
 18 salcianu 1.1.2.17  * <code>PAEdgeSet</code>
 19 salcianu 1.1.2.1   * 
 20 cananian 1.1.2.19  * @author  Alexandru SALCIANU <salcianu@retezat.lcs.mit.edu>
 21 salcianu 1.4       * @version $Id: PAEdgeSet.java,v 1.4 2003/06/04 18:44:32 salcianu Exp $
 22 salcianu 1.1.2.1   */
 23 salcianu 1.1.2.17 public interface PAEdgeSet {
 24 salcianu 1.1.2.17     
 25 salcianu 1.1.2.17 
 26 salcianu 1.1.2.17     public void addEdge(Temp v, PANode node);
 27 salcianu 1.1.2.17 
 28 salcianu 1.1.2.17     public void addEdges(Temp v, Collection nodes);
 29 salcianu 1.1.2.17 
 30 salcianu 1.1.2.17 
 31 salcianu 1.1.2.17     public void removeEdge(Temp v, PANode node);
 32 salcianu 1.1.2.17 
 33 salcianu 1.1.2.17     public void removeEdges(Temp v);
 34 salcianu 1.1.2.17 
 35 salcianu 1.1.2.1  
 36 salcianu 1.1.2.17     public Set pointedNodes(Temp v);
 37 salcianu 1.1.2.17 
 38 salcianu 1.1.2.17 
 39 salcianu 1.1.2.17     public Set allVariables();
 40 salcianu 1.1.2.17 
 41 salcianu 1.1.2.17 
 42 salcianu 1.1.2.17 
 43 salcianu 1.1.2.17 
 44 salcianu 1.4          public boolean addEdge(PANode node1, String f, PANode node2);
 45 salcianu 1.1.2.17 
 46 salcianu 1.4          public boolean addEdges(PANode node1, String f, Collection node2s);
 47 salcianu 1.1.2.17 
 48 salcianu 1.1.2.17     public void addEdges(Collection node1s, String f, PANode node2);
 49 salcianu 1.1.2.17 
 50 salcianu 1.1.2.17     public void addEdges(Collection node1s, String f, Collection node2s);
 51 salcianu 1.1.2.17 
 52 salcianu 1.1.2.17 
 53 salcianu 1.1.2.17     public void removeEdge(PANode node1, String f, PANode node2);
 54 salcianu 1.1.2.1      
 55 salcianu 1.1.2.17     public void removeEdges(PANode node1, String f);
 56 salcianu 1.1.2.17 
 57 salcianu 1.1.2.17     public void removeEdges(PANode node1);
 58 salcianu 1.1.2.17 
 59 salcianu 1.1.2.17 
 60 salcianu 1.1.2.17     public Set pointedNodes(PANode node1, String f);
 61 salcianu 1.1.2.17 
 62 salcianu 1.1.2.17     public Set pointedNodes(Collection node1s, String f);
 63 salcianu 1.1.2.17 
 64 salcianu 1.1.2.17     public Set pointedNodes(PANode node);
 65 salcianu 1.1.2.17 
 66 salcianu 1.1.2.17 
 67 salcianu 1.1.2.17     public Set allFlagsForNode(PANode node);
 68 salcianu 1.1.2.17 
 69 salcianu 1.1.2.17 
 70 salcianu 1.1.2.17     public Set allSourceNodes();
 71 salcianu 1.1.2.17 
 72 salcianu 1.1.2.17 
 73 salcianu 1.1.2.17 
 74 salcianu 1.1.2.17     public Set getEdgesFrom(PANode node, String f);
 75 salcianu 1.1.2.17 
 76 salcianu 1.1.2.17 
 77 salcianu 1.1.2.17 
 78 salcianu 1.1.2.17     public void forAllPointedNodes(Temp v, PANodeVisitor visitor);
 79 salcianu 1.1.2.17 
 80 salcianu 1.1.2.17     public void forAllPointedNodes(PANode node, String f,
 81 salcianu 1.1.2.17                                    PANodeVisitor visitor);
 82 salcianu 1.1.2.17 
 83 salcianu 1.1.2.17     public void forAllPointedNodes(PANode node, PANodeVisitor visitor);
 84 salcianu 1.1.2.17 
 85 salcianu 1.1.2.17     public void forAllNodes(PANodeVisitor visitor);
 86 salcianu 1.1.2.17 
 87 salcianu 1.1.2.1      
 88 salcianu 1.1.2.13 
 89 salcianu 1.1.2.17     public void forAllEdges(Temp v, PAEdgeVisitor visitor);
 90 salcianu 1.1.2.17 
 91 salcianu 1.1.2.17     public void forAllEdges(PANode node, PAEdgeVisitor visitor);
 92 salcianu 1.1.2.17 
 93 salcianu 1.1.2.17     public void forAllEdges(PAEdgeVisitor visitor);
 94 salcianu 1.1.2.17 
 95 salcianu 1.1.2.17 
 96 salcianu 1.1.2.17     public void copyEdges(PANode node, PAEdgeSet es2);
 97 salcianu 1.1.2.17 
 98 salcianu 1.1.2.17 
 99 salcianu 1.1.2.17     public PAEdgeSet specialize(final Map map);
100 salcianu 1.1.2.17 
101 salcianu 1.1.2.17 
102 salcianu 1.1.2.17     public void remove(Set set);
103 salcianu 1.1.2.17 
104 salcianu 1.4          /** Add all the edges from edges2 to <code>this</code>
105 salcianu 1.4              <code>PAEdgeSet</code>.
106 salcianu 1.1.2.17 
107 salcianu 1.4              @param ppgRoots If non-null, the starting points of all new
108 salcianu 1.4              edges will be added to this set (this is useful for doing
109 salcianu 1.4              efficient escape info propagation after points-to graph
110 salcianu 1.4              updates). */
111 salcianu 1.4          public void union(PAEdgeSet edges2, Set ppgRoots);
112 salcianu 1.4      
113 salcianu 1.4      
114 salcianu 1.4          /** Convenient version of <code>union</code>, equivalent to
115 salcianu 1.4              <code>union(edges2, null)</code>. */
116 salcianu 1.1.2.17     public void union(PAEdgeSet edges2);
117 salcianu 1.1.2.17 
118 salcianu 1.1.2.18 
119 cananian 1.3          /** Returns a relation that contains all the pairs <code>&lt;n2,n1&gt;</code>
120 salcianu 1.1.2.18         such that there was an edge from <code>n1</code> to <code>n2</code>
121 salcianu 1.1.2.18         (through some field <code>f</code>). */
122 salcianu 1.1.2.18     public Relation getPrecedenceRelation();
123 salcianu 1.1.2.17 
124 salcianu 1.1.2.17     public Object clone();
125 cananian 1.2      }