package net.sf.orcc.backends.c.dal;
import java.util.Collection;
import net.sf.orcc.ir.InstCall;
import net.sf.orcc.ir.Var;
/**
* Implementation of the Token for instructions of the type InstCall
*
* @author James Guthrie
*
*/
public class CallTokenImpl extends TokenImpl implements Token {
public CallTokenImpl(InstCall instCall) {
i = instCall;
}
@Override
public InstCall getInstruction() {
return (InstCall) i;
}
@Override
public Var getTargetVar() {
return ((InstCall) i).getTarget().getVariable();
}
@Override
public String toString() {
return "call_" + getInstruction().getProcedure().getName() + "_" + new Stringifier().doSwitch(getInstruction().getArguments());
}
@Override
public boolean isStateToken() {
return true;
}
@Override
public boolean isInputToken() {
return false;
}
@Override
public boolean in(Collection<Var> vars) {
String thisName = getInstruction().getTarget().getVariable().getName();
for (Var v : vars) {
if (v.getName().equals(thisName)) {
return true;
}
}
return false;
}
}