1 19 20 25 26 27 package soot.toolkits.graph; 28 29 30 import java.util.*; 31 import soot.*; 32 import soot.util.*; 33 34 35 36 37 42 43 public class MemoryEfficientGraph extends HashMutableDirectedGraph 44 { 45 46 HashMap self = new HashMap(); 47 48 public void addNode(Object o) { 49 super.addNode(o); 50 self.put(o,o); 51 } 52 53 public void removeNode(Object o) { 54 super.removeNode(o); 55 self.remove(o); 56 } 57 58 public void addEdge(Object from, Object to) { 59 if (containsNode(from) && containsNode(to)) 60 super.addEdge(self.get(from), self.get(to)); 61 else if (!containsNode(from)) 62 throw new RuntimeException (from.toString() + " not in graph!"); 63 else 64 throw new RuntimeException (to.toString() + " not in graph!"); 65 } 66 67 public void removeEdge(Object from, Object to) { 68 if (containsNode(from) && containsNode(to)) 69 super.removeEdge(self.get(from), self.get(to)); 70 else if (!containsNode(from)) 71 throw new RuntimeException (from.toString() + " not in graph!"); 72 else 73 throw new RuntimeException (to.toString() + " not in graph!"); 74 } 75 76 } 77 78 79 | Popular Tags |