1 19 20 25 26 27 package soot.util; 28 import soot.jimple.toolkits.graph.*; 29 import soot.toolkits.graph.*; 30 import soot.jimple.*; 31 import soot.*; 32 import java.util.*; 33 34 37 public abstract class UnitMap implements Map { 38 private Hashtable unitToResult; 39 40 47 public UnitMap(Body b) { 48 unitToResult = new Hashtable(); 49 map(b); 50 } 51 52 59 public UnitMap(UnitGraph g) { 60 this(g.getBody()); 61 } 62 63 71 public UnitMap(Body b, int initialCapacity) { 72 unitToResult = new Hashtable(initialCapacity); 73 map(b); 74 } 75 76 84 public UnitMap(UnitGraph g, int initialCapacity) { 85 this(g.getBody(), initialCapacity); 86 } 87 88 98 public UnitMap(Body b, int initialCapacity, float loadFactor) { 99 unitToResult = new Hashtable(initialCapacity); 100 init(); 101 map(b); 102 } 103 104 114 public UnitMap(UnitGraph g, int initialCapacity, float loadFactor) { 115 this(g.getBody(), initialCapacity); 116 } 117 118 121 private void map(Body b) { 122 Iterator unitIt = b.getUnits().iterator(); 123 while (unitIt.hasNext()) { 124 Unit currentUnit = (Unit)unitIt.next(); 125 Object o = mapTo(currentUnit); 126 if (o != null) 127 unitToResult.put(currentUnit, o); 128 } 129 } 130 131 136 protected void init() {}; 137 138 145 protected abstract Object mapTo(Unit unit); 146 147 148 149 public void clear() { 150 unitToResult.clear(); 151 } 152 153 public boolean containsKey(Object key) { 154 return unitToResult.containsKey(key); 155 } 156 157 public boolean containsValue(Object value) { 158 return unitToResult.containsValue(value); 159 } 160 161 public Set entrySet() { 162 return unitToResult.entrySet(); 163 } 164 165 public boolean equals(Object o) { 166 return unitToResult.equals(o); 167 } 168 169 public Object get(Object key) { 170 return unitToResult.get(key); 171 } 172 173 public int hashCode() { 174 return unitToResult.hashCode(); 175 } 176 177 public boolean isEmpty() { 178 return unitToResult.isEmpty(); 179 } 180 181 public Set keySet() { 182 return unitToResult.keySet(); 183 } 184 185 public Object put(Object key, Object value) { 186 return unitToResult.put(key, value); 187 } 188 189 public void putAll(Map t) { 190 unitToResult.putAll(t); 191 } 192 193 public Object remove(Object key) { 194 return unitToResult.remove(key); 195 } 196 197 public int size() { 198 return unitToResult.size(); 199 } 200 201 public Collection values() { 202 return unitToResult.values(); 203 } 204 } 205 206 | Popular Tags |