package com.thaiopensource.relaxng.pattern;

import org.relaxng.datatype.Datatype;

class DatatypeValue {
  private final Object value;
  private final Datatype dt;

  DatatypeValue(Object value, Datatype dt) {
    this.value = value;
    this.dt = dt;
  }

  public int hashCode() {
    return dt.hashCode() ^ dt.valueHashCode(value);
  }

  public boolean equals(Object obj) {
    if (!(obj instanceof DatatypeValue))
      return false;
    DatatypeValue other = (DatatypeValue)obj;
    if (other.dt != dt)
      return false;
    return dt.sameValue(value, other.value);
  }
}
