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><n2,n1></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 }