CastFactory.java

package edu.udel.cis.vsl.tass.symbolic.cast;

import java.util.HashMap;
import java.util.Map;

import edu.udel.cis.vsl.tass.symbolic.NumericPrimitive;
import edu.udel.cis.vsl.tass.symbolic.IF.type.SymbolicTypeIF;
import edu.udel.cis.vsl.tass.symbolic.expression.SymbolicExpression;
import edu.udel.cis.vsl.tass.symbolic.expression.SymbolicExpressionKey;
import edu.udel.cis.vsl.tass.symbolic.type.SymbolicTypeFactory;

public class CastFactory {

	private Map<SymbolicExpressionKey<RealCastExpression>, RealCastExpression> map = new HashMap<SymbolicExpressionKey<RealCastExpression>, RealCastExpression>();

	private SymbolicTypeFactory typeFactory;

	private SymbolicTypeIF realType;

	public CastFactory(SymbolicTypeFactory typeFactory) {
		this.typeFactory = typeFactory;
		realType = typeFactory.realType();
	}

	public SymbolicTypeFactory typeFactory() {
		return typeFactory;
	}

	public RealCastExpression realCast(NumericPrimitive integerExpression) {
		return SymbolicExpression.flyweight(map, new RealCastExpression(
				realType, integerExpression));
	}

}