TupleFactory.java
package edu.udel.cis.vsl.tass.symbolic.tuple;
import java.util.HashMap;
import java.util.Map;
import edu.udel.cis.vsl.tass.symbolic.IF.tree.NumericConcreteExpressionIF;
import edu.udel.cis.vsl.tass.symbolic.IF.tree.TreeExpressionIF;
import edu.udel.cis.vsl.tass.symbolic.IF.type.SymbolicTupleTypeIF;
import edu.udel.cis.vsl.tass.symbolic.expression.SymbolicExpression;
import edu.udel.cis.vsl.tass.symbolic.expression.SymbolicExpressionKey;
public class TupleFactory {
Map<SymbolicExpressionKey<TupleRead>, TupleRead> tupleReadMap = new HashMap<SymbolicExpressionKey<TupleRead>, TupleRead>();
Map<SymbolicExpressionKey<TupleWrite>, TupleWrite> tupleWriteMap = new HashMap<SymbolicExpressionKey<TupleWrite>, TupleWrite>();
Map<SymbolicExpressionKey<Tuple>, Tuple> tupleMap = new HashMap<SymbolicExpressionKey<Tuple>, Tuple>();
public TupleRead tupleRead(TreeExpressionIF tuple,
NumericConcreteExpressionIF index) {
return SymbolicExpression.flyweight(tupleReadMap, new TupleRead(tuple,
index));
}
public TupleWrite tupleWrite(TreeExpressionIF tuple,
NumericConcreteExpressionIF index, TreeExpressionIF value) {
return SymbolicExpression.flyweight(tupleWriteMap, new TupleWrite(
tuple, index, value));
}
public Tuple tuple(TreeExpressionIF[] components,
SymbolicTupleTypeIF tupleType) {
return SymbolicExpression.flyweight(tupleMap, new Tuple(tupleType,
components));
}
}