CommonVSArraySectionReference.java
package edu.udel.cis.vsl.sarl.expr.common.valueSetReference;
import edu.udel.cis.vsl.sarl.IF.expr.NumericExpression;
import edu.udel.cis.vsl.sarl.IF.expr.SymbolicConstant;
import edu.udel.cis.vsl.sarl.IF.expr.SymbolicExpression;
import edu.udel.cis.vsl.sarl.IF.expr.valueSetReference.VSArraySectionReference;
import edu.udel.cis.vsl.sarl.IF.object.SymbolicSequence;
import edu.udel.cis.vsl.sarl.IF.type.SymbolicType;
public class CommonVSArraySectionReference extends CommonNTValueSetReference
implements VSArraySectionReference {
/**
* Constructor builds an instance of {@link VSArraySectionReference}
*
* @param referenceType
* @param function
* @param parentLoHiStepSequence
*/
public CommonVSArraySectionReference(SymbolicType referenceType,
SymbolicConstant function,
SymbolicSequence<SymbolicExpression> parentLoHiStepSequence) {
super(referenceType, function, parentLoHiStepSequence);
}
@Override
public VSReferenceKind valueSetReferenceKind() {
return VSReferenceKind.ARRAY_SECTION;
}
@Override
public NumericExpression lowerBound() {
return this.getIndexExpression();
}
@Override
public NumericExpression upperBound() {
return (NumericExpression) ((SymbolicSequence<?>) this.argument(1))
.get(2);
}
@Override
public NumericExpression step() {
return (NumericExpression) ((SymbolicSequence<?>) this.argument(1))
.get(3);
}
@Override
public boolean isArraySectionReference() {
return true;
}
}