CommonVSArrayElementReference.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.VSArrayElementReference;
import edu.udel.cis.vsl.sarl.IF.object.SymbolicSequence;
import edu.udel.cis.vsl.sarl.IF.type.SymbolicType;

public class CommonVSArrayElementReference extends CommonNTValueSetReference
		implements VSArrayElementReference {

	/**
	 * Constructor that builds a CommonVSArrayElementReference.
	 * 
	 * @param referenceType
	 * @param arrayElementReferenceFunction
	 * @param parentIndexSequence
	 * 
	 * @return CommonArrayElementReference
	 */
	public CommonVSArrayElementReference(SymbolicType referenceType,
			SymbolicConstant arrayElementReferenceFunction,
			SymbolicSequence<SymbolicExpression> parentIndexSequence) {
		super(referenceType, arrayElementReferenceFunction,
				parentIndexSequence);
	}

	@Override
	public VSReferenceKind valueSetReferenceKind() {
		return VSReferenceKind.ARRAY_ELEMENT;
	}

	@Override
	public NumericExpression getIndex() {
		return getIndexExpression();
	}

	@Override
	public boolean isArrayElementReference() {
		return true;
	}
}