package kr.ac.snu.selab.soot.analyzer;
import soot.Local;
import soot.SootField;
import soot.SootMethod;
import soot.Unit;
public class LocalInfo {
private String category;
private Local local;
private SootMethod declaringMethod;
private SootField declaringField;
private SootMethod method;
private SootField field;
private Unit unit;
private int paramNum;
public LocalInfo() {
category = null;
local = null;
declaringMethod = null;
declaringField = null;
method = null;
field = null;
unit = null;
paramNum = -1;
}
public String toString() {
return key();
}
public int hashCode() {
return toString().hashCode();
}
public String key() {
String keyStr = null;
String categoryStr = category;
String localStr = "";
if (local != null) {
localStr = local.toString();
}
String declaringMethodStr = "";
if (declaringMethod != null) {
declaringMethodStr = declaringMethod.getSignature();
}
String declaringFieldStr = "";
if (declaringField != null) {
declaringFieldStr = declaringField.toString();
}
String methodStr = "";
if (method != null) {
methodStr = method.toString();
}
String fieldStr = "";
if (field != null) {
fieldStr = field.toString();
}
String paramNumStr = (new Integer(paramNum)).toString();
keyStr = "category: " + categoryStr + "_" +
"local: " + localStr + "_" +
"declaringMethod: " + declaringMethodStr + "_" +
"declaringField: " + declaringFieldStr + "_" +
"method: " + methodStr + "_" +
"field: " + fieldStr + "_" +
"ParamNum: " + paramNumStr;
return keyStr;
}
public String category() {
return category;
}
public void setCategory(String aCategory) {
category = aCategory;
}
public SootMethod declaringMethod() {
return declaringMethod;
}
public void setDeclaringMethod(SootMethod aMethod) {
declaringMethod = aMethod;
}
public SootField declaringField() {
return declaringField;
}
public void setDeclaringField(SootField aField) {
declaringField = aField;
}
public void setLocal(Local aLocal) {
local = aLocal;
}
public void setMethod(SootMethod aMethod) {
method = aMethod;
}
public void setField(SootField aField) {
field = aField;
}
public void setUnit(Unit aUnit) {
unit = aUnit;
}
public Local local() {
return local;
}
public SootMethod method() {
return method;
}
public SootField field() {
return field;
}
public Unit unit() {
return unit;
}
public int paramNum() {
return paramNum;
}
public void setParamNum(int i) {
paramNum = i;
}
}