/* DefaultRelationAllocator - Decompiled by JODE
 * Visit http://jode.sourceforge.net/
 */
package alloy.transl;
import alloy.ast.LeafExpr;
import alloy.bool.BooleanFormula;
import alloy.util.MultiDimArray;
import alloy.util.MultiDimIter;

public class DefaultRelationAllocator implements RelationAllocator
{
    protected RelationAllocator _fallbackAllocator;
    protected BoolVarAllocator _boolVarAllocator;
    
    public DefaultRelationAllocator(BoolVarAllocator boolvarallocator) {
	this(boolvarallocator, null);
    }
    
    public DefaultRelationAllocator(BoolVarAllocator boolvarallocator,
				    RelationAllocator relationallocator) {
	_boolVarAllocator = boolvarallocator;
	_fallbackAllocator = relationallocator;
    }
    
    public ExprTransl allocRelation(LeafExpr leafexpr, int[] is) {
	MultiDimArray multidimarray = new MultiDimArray(is);
	MultiDimIter multidimiter = new MultiDimIter(is);
	while (multidimiter.hasNext()) {
	    int[] is_0_ = (int[]) multidimiter.next();
	    int i = _boolVarAllocator.allocBoolVar();
	    BooleanFormula booleanformula = BooleanFormula.makeLit(i);
	    multidimarray.put(is_0_, booleanformula);
	}
	return new ExprTransl(multidimarray);
    }
    
    public BoolVarAllocator getBoolVarAllocator() {
	return _boolVarAllocator;
    }
}
