LiteralCell.java

package edu.udel.cis.vsl.tass.dynamic.impl.cell;

import edu.udel.cis.vsl.tass.dynamic.IF.cell.LiteralCellIF;
import edu.udel.cis.vsl.tass.model.IF.ModelIF;
import edu.udel.cis.vsl.tass.model.IF.expression.ObjectLiteralExpressionIF;

public class LiteralCell extends Cell implements LiteralCellIF {

	private ObjectLiteralExpressionIF expression;

	private ModelIF model;

	/**
	 * A literal cell represents the memory region used to store literal values
	 * that occur in program code.
	 */
	public LiteralCell(ObjectLiteralExpressionIF expression) {
		super(DynamicScope.LITERAL);
		this.expression = expression;
	}

	@Override
	public String toString() {
		return expression.toString();
	}

	@Override
	public boolean equals(Object object) {
		if (object instanceof LiteralCell) {
			LiteralCell that = (LiteralCell) object;

			return super.equals(that) && expression == that.expression;
		}
		return false;
	}

	@Override
	public int hashCode() {
		return super.hashCode() + expression.hashCode();
	}

	public ModelIF model() {
		return model;
	}

	@Override
	public ObjectLiteralExpressionIF expression() {
		return expression;
	}
}