package x10.types.constraints.xnative;
import java.util.Collections;
import java.util.List;
import x10.constraint.XEQV;
import x10.constraint.XTerm;
import x10.constraint.XVar;
import x10.constraint.xnative.XRoot;
import x10.types.constraints.CSelf;
/**
* An optimized representation of self variables.
* Keeps only an int index. Equality involves only
* int equality.
* @author vj
*
*/
public class CNativeSelf extends XRoot implements CSelf {
private static final long serialVersionUID = 7709199402803815649L;
public static final String SELF_VAR_PREFIX="self";
public final int num;
public CNativeSelf(int n) {this.num=n;}
@Override
public int hashCode() {return num;}
@Override
public boolean okAsNestedTerm() {return true;}
@Override
public boolean hasVar(XVar v) {return equals(v);}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o instanceof CNativeSelf) return num == ((CNativeSelf) o).num;
return false;
}
@Override
public String toString() {return SELF_VAR_PREFIX;}
}