//import choco.Problem;
import choco.ContradictionException;
import choco.integer.*;
import choco.util.*;


public class DecisionVar {
    IntDomainVar v;    // out-edges
    IntDomainVar w;    // in-edges
    int[] val;         // statically ordered domain
    int m;             // initial domain size

    public String toString(){return v.pretty();}

    public DecisionVar(IntDomainVar v, IntDomainVar w) {
	this.v  = v;
	this.w  = w;
    }


    public void setVal(int x) throws ContradictionException {v.setVal(x);}
    public int getDomainSize() {return v.getDomainSize();}
    public int getInf() {return v.getInf();}
    public int getVal() {return v.getVal();}    
    public int getOutDegree(){return v.getDomainSize();}
    public int getInDegree(){return w.getDomainSize();}
    public boolean canBeInstantiatedTo(int x){return v.canBeInstantiatedTo(x);}
    public IntIterator getIterator(){return v.getDomain().getIterator();}
    public int[] getOrderedDomain(){return val;}
    public void setOrderedDomain(int[] orderedDomain){val = orderedDomain;}
    public void setInitialDomainSize(){m = v.getDomainSize();} // call once only!!!
    public int getInitialDomainSize(){return m;} // for static dvo

}