/**
*
*/
package x10.constraint.xnative;
import x10.constraint.XUQV;
import x10.constraint.XVar;
/**
* An efficient representation of a universally
* quantified variable that is permitted to occur in multiple constraints.
*
* Such a variable may optionally have a string name.
* @author vj
* @see XNativeEQV
*
*/
public class XNativeUQV extends XRoot implements XUQV {
private static final long serialVersionUID = 6919751399957740949L;
public final int num;
public final String str;
public XNativeUQV(int n) {this(null, n);}
public XNativeUQV(String s, int n) {
this.num=n;
this.str=s;
}
@Override public int hashCode() {return num;}
@Override public boolean equals(Object o) {
if (this == o) return true;
if (o instanceof XNativeUQV) return num == ((XNativeUQV) o).num;
return false;
}
@Override
public boolean okAsNestedTerm() {return true;}
@Override
public boolean hasVar(XVar v) {return equals(v);}
@Override public String toString() {return str == null ? "uqv#" + num: str;}
}