1 19 20 package soot; 21 import soot.jimple.*; 22 import java.util.*; 23 24 27 public final class MethodContext implements MethodOrMethodContext 28 { 29 private SootMethod method; 30 public SootMethod method() { return method; } 31 private Context context; 32 public Context context() { return context; } 33 private MethodContext( SootMethod method, Context context ) { 34 this.method = method; 35 this.context = context; 36 } 37 public int hashCode() { 38 return method.hashCode() + context.hashCode(); 39 } 40 public boolean equals( Object o ) { 41 if( o instanceof MethodContext ) { 42 MethodContext other = (MethodContext) o; 43 return method.equals( other.method ) && context.equals( other.context ); 44 } 45 return false; 46 } 47 public static MethodOrMethodContext v( SootMethod method, Context context ) { 48 if( context == null ) return method; 49 MethodContext probe = new MethodContext( method, context ); 50 Map map = G.v().MethodContext_map; 51 MethodContext ret = (MethodContext) map.get( probe ); 52 if( ret == null ) { 53 map.put( probe, probe ); 54 return probe; 55 } 56 return ret; 57 } 58 public String toString() { 59 return "Method "+method+" in context "+context; 60 } 61 } 62 | Popular Tags |