package jqian.sootex.dependency.pdg;
import jqian.sootex.location.*;
import jqian.sootex.util.SootUtils;
import soot.*;
/**
*
*/
public class ActualOut extends ActualNode {
public ActualOut(MethodOrMethodContext mc,Unit callsite,SootMethod callee,Object binding,Object fm) {
super(mc,callsite,callee,binding,fm);
}
public Object clone() {
return new ActualOut(_mc,_callsite,_callee,_binding,_formalNodeBinding);
}
public String toString() {
String fmName = "";
if(_formalNodeBinding!=null){
if(_formalNodeBinding instanceof MethodRet){
fmName = "RET";
}
else if(_binding instanceof HeapLocation || _binding instanceof GlobalLocation
|| _binding instanceof SootField || _binding instanceof Type){
fmName = "...";
}
else{
fmName = _formalNodeBinding.toString();
}
}
String actual = "";
if(_binding instanceof SootField){
actual = SootUtils.getShortFieldString((SootField)_binding);
}
else if(_binding instanceof Type){
actual = _binding.toString();//+"[x]";
}
else{
actual = _binding.toString();
}
String out = "#"+_id+" AO "+actual+"="+fmName;
return out;
}
}