001 package com.thaiopensource.datatype.xsd;
002
003 import org.relaxng.datatype.ValidationContext;
004
005 class FloatDatatype extends DoubleDatatype {
006
007 Object getValue(String str, ValidationContext vc) {
008 if (str.equals("INF"))
009 return new Float(Float.POSITIVE_INFINITY);
010 if (str.equals("-INF"))
011 return new Float(Float.NEGATIVE_INFINITY);
012 if (str.equals("NaN"))
013 return new Float(Float.NaN);
014 return new Float(str);
015 }
016
017 public boolean isLessThan(Object obj1, Object obj2) {
018 return ((Float)obj1).floatValue() < ((Float)obj2).floatValue();
019 }
020
021 public boolean sameValue(Object value1, Object value2) {
022 float f1 = ((Float)value1).floatValue();
023 float f2 = ((Float)value2).floatValue();
024 // NaN = NaN
025 return f1 == f2 || (f1 != f1 && f2 != f2);
026 }
027 }