00001 00005 package edu.mit.csail.sdg.squander.absstate; 00006 00007 import java.util.Collection; 00008 import java.util.IdentityHashMap; 00009 import java.util.Set; 00010 import java.util.Map.Entry; 00011 00017 public class AbstractState { 00018 00022 private IdentityHashMap<Object, ObjAbsState> obj2AbsState = new IdentityHashMap<Object, ObjAbsState>(); 00023 00024 public Collection<Object> getAllObjects() { return obj2AbsState.keySet(); } 00025 00026 public ObjAbsState getObjState(Object obj) { 00027 return obj2AbsState.get(obj); 00028 } 00029 00030 public ObjAbsState getOrAddObjState(Object obj) { 00031 ObjAbsState objState = getObjState(obj); 00032 if (objState == null) { 00033 objState = new ObjAbsState(obj); 00034 setObjState(obj, objState); 00035 } 00036 return objState; 00037 } 00038 00039 public void setObjState(Object obj, ObjAbsState objState) { 00040 obj2AbsState.put(obj, objState); 00041 } 00042 00043 public void clear() { 00044 obj2AbsState.clear(); 00045 } 00046 00047 public Set<Entry<Object, ObjAbsState>> getEntries() { 00048 return obj2AbsState.entrySet(); 00049 } 00050 00051 @Override 00052 public String toString() { 00053 StringBuilder sb = new StringBuilder(); 00054 for (Object obj : obj2AbsState.keySet()) { 00055 sb.append(obj2AbsState.get(obj)).append("\n"); 00056 } 00057 return sb.toString(); 00058 } 00059 00060 public Collection<ObjAbsState> getAllObjStates() { 00061 return obj2AbsState.values(); 00062 } 00063 00064 }