CommonVariableExpression.java
/**
*
*/
package edu.udel.cis.vsl.civl.model.common.expression;
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.VariableExpression;
import edu.udel.cis.vsl.civl.model.IF.variable.Variable;
/**
* A use of a variable in an expression.
*
* @author Timothy K. Zirkel (zirkel)
*
*/
public class CommonVariableExpression extends CommonExpression implements
VariableExpression {
Variable variable;
/**
* A use of a variable in an expression.
*
* @param variable
* The variable.
*/
public CommonVariableExpression(CIVLSource source, Variable variable) {
super(source);
this.variable = variable;
}
/**
* @return The variable
*/
public Variable variable() {
return variable;
}
/**
* @param variable
* The variable.
*/
public void setVariable(Variable variable) {
this.variable = variable;
}
@Override
public String toString() {
return variable.name().name();
}
@Override
public ExpressionKind expressionKind() {
return ExpressionKind.VARIABLE;
}
@Override
public void setPurelyLocal(boolean pl) {
this.variable.setPurelyLocal(pl);
}
@Override
public void purelyLocalAnalysisOfVariables(Scope funcScope){
// if(this.variable.type().isPointerType())
// this.setPurelyLocal(false);
if(funcScope.isDescendantOf(this.variable.scope()))
this.setPurelyLocal(false);
}
@Override
public void purelyLocalAnalysis() {
this.purelyLocal = this.variable.purelyLocal();
}
}