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    }