CommonFunctionPointerExpression.java
package edu.udel.cis.vsl.civl.model.common.expression;
import java.util.Set;
import edu.udel.cis.vsl.civl.model.IF.CIVLFunction;
import edu.udel.cis.vsl.civl.model.IF.CIVLSource;
import edu.udel.cis.vsl.civl.model.IF.Scope;
import edu.udel.cis.vsl.civl.model.IF.expression.FunctionPointerExpression;
import edu.udel.cis.vsl.civl.model.IF.variable.Variable;
import edu.udel.cis.vsl.civl.model.common.type.CommonPointerType;
import edu.udel.cis.vsl.sarl.IF.type.SymbolicType;
public class CommonFunctionPointerExpression extends CommonExpression implements
FunctionPointerExpression {
private CIVLFunction function;
public CommonFunctionPointerExpression(CIVLSource source,
CIVLFunction function, SymbolicType pointerType) {
super(source);
this.function = function;
this.expressionType = new CommonPointerType(function.functionType(),
pointerType);
this.setExpressionScope(function.containingScope());
}
@Override
public ExpressionKind expressionKind() {
return ExpressionKind.FUNCTION_POINTER;
}
@Override
public Set<Variable> variableAddressedOf(Scope scope) {
return function.variableAddressedOf(scope);
}
@Override
public Set<Variable> variableAddressedOf() {
return function.variableAddressedOf();
}
@Override
public Scope scope() {
return this.expressionScope();
}
@Override
public CIVLFunction function() {
return this.function;
}
@Override
public String toString() {
return function.name().name();
}
}