CommonACSLPredicate.java
package edu.udel.cis.vsl.civl.model.common;
import java.util.List;
import edu.udel.cis.vsl.civl.model.IF.ACSLPredicate;
import edu.udel.cis.vsl.civl.model.IF.CIVLSource;
import edu.udel.cis.vsl.civl.model.IF.Identifier;
import edu.udel.cis.vsl.civl.model.IF.ModelFactory;
import edu.udel.cis.vsl.civl.model.IF.Scope;
import edu.udel.cis.vsl.civl.model.IF.expression.Expression;
import edu.udel.cis.vsl.civl.model.IF.variable.Variable;
public class CommonACSLPredicate extends CommonFunction
implements
ACSLPredicate {
/**
* {@linkplain ACSLPredicate#definition()}
*/
private final Expression definition;
public CommonACSLPredicate(CIVLSource source, Identifier name,
Scope parameterScope, List<Variable> parameters,
Scope containingScope, int fid, ModelFactory factory,
Expression definition) {
super(source, true, name, parameterScope, parameters,
factory.typeFactory().booleanType(), containingScope, fid,
factory.location(source, parameterScope), factory);
this.definition = definition;
}
@Override
public Expression definition() {
return definition;
}
@Override
public int hashCode() {
// no over-loading, so parameters are not part of the hash:
return definition.hashCode() ^ this.name().hashCode() ^ 897653;
}
}