001 package com.thaiopensource.datatype.xsd;
002
003 abstract class BinaryDatatype extends DatatypeBase implements Measure {
004 BinaryDatatype() {
005 // whiteSpace is actually collapse, but we handle it ourselves for efficiency
006 super(WHITE_SPACE_PRESERVE);
007 }
008
009 public int valueHashCode(Object value) {
010 byte[] v = (byte[])value;
011 int hc = 0;
012 for (int i = 0, len = v.length; i < len; i++)
013 hc = (hc * 33) ^ (v[i] & 0xFF);
014 return hc;
015 }
016
017 public boolean sameValue(Object value1, Object value2) {
018 byte[] v1 = (byte[])value1;
019 byte[] v2 = (byte[])value2;
020 if (v1.length != v2.length)
021 return false;
022 for (int i = 0, len = v1.length; i < len; i++)
023 if (v1[i] != v2[i])
024 return false;
025 return true;
026 }
027
028 public int getLength(Object obj) {
029 return ((byte[])obj).length;
030 }
031
032 Measure getMeasure() {
033 return this;
034 }
035 }