ASTLoopInvariant.java
package edu.udel.cis.vsl.tass.front.minimp.ast.statement;
import edu.udel.cis.vsl.tass.front.minimp.ast.expression.ASTExpressionIF;
import edu.udel.cis.vsl.tass.front.minimp.ast.misc.ASTIdentifier;
import edu.udel.cis.vsl.tass.model.IF.SyntaxException;
import edu.udel.cis.vsl.tass.util.Source;
import edu.udel.cis.vsl.tass.util.Sourceable;
public class ASTLoopInvariant implements Sourceable {
private ASTIdentifier name;
private ASTIdentifier functionName;
private int specFactor;
private int implFactor;
private ASTExpressionIF invariant;
private Source source;
public ASTLoopInvariant(ASTIdentifier name, ASTIdentifier functionName,
ASTExpressionIF invariant, int spec, int impl)
throws SyntaxException {
if (spec <= 0 || impl <= 0) {
throw new SyntaxException(invariant.getSource(),
"Skew factors cannot be less than or equal to 0.");
}
this.name = name;
this.functionName = functionName;
this.invariant = invariant;
this.specFactor = spec;
this.implFactor = impl;
}
public ASTLoopInvariant(ASTIdentifier name, ASTIdentifier functionName,
ASTExpressionIF invariant) throws SyntaxException {
this(name, functionName, invariant, 1, 1);
}
public ASTExpressionIF getInvariant() {
return this.invariant;
}
public String toString() {
String result = name.toString() + "{";
if (specFactor != 1 && implFactor != 1) {
result += specFactor + ":" + implFactor + " ";
}
result += this.invariant;
return result;
}
public int getSpecFactor() {
return this.specFactor;
}
public int getImplFactor() {
return this.implFactor;
}
public String getLabel() {
return this.name.toString();
}
public String getFunctionName() {
return this.functionName.toString();
}
public Source getSource() {
return this.source;
}
public void setSource(Source source) {
this.source = source;
}
public void setText(String text) {
this.source.setText(text);
}
}