// 
// Decompiled by Procyon v0.6.0
// 

package ch.randelshofer.fastdoubleparser;

public final class JavaFloatParser
{
    private static final JavaFloatBitsFromByteArray BYTE_ARRAY_PARSER;
    private static final JavaFloatBitsFromCharArray CHAR_ARRAY_PARSER;
    private static final JavaFloatBitsFromCharSequence CHAR_SEQUENCE_PARSER;
    
    private JavaFloatParser() {
    }
    
    public static float parseFloat(final CharSequence str) throws NumberFormatException {
        return parseFloat(str, 0, str.length());
    }
    
    public static float parseFloat(final CharSequence str, final int offset, final int length) throws NumberFormatException {
        final long bitPattern = JavaFloatParser.CHAR_SEQUENCE_PARSER.parseFloatingPointLiteral(str, offset, length);
        if (bitPattern == 9221120237041090561L) {
            throw new NumberFormatException("illegal syntax");
        }
        return Float.intBitsToFloat((int)bitPattern);
    }
    
    public static float parseFloat(final byte[] str) throws NumberFormatException {
        return parseFloat(str, 0, str.length);
    }
    
    public static float parseFloat(final byte[] str, final int offset, final int length) throws NumberFormatException {
        final long bitPattern = JavaFloatParser.BYTE_ARRAY_PARSER.parseFloatingPointLiteral(str, offset, length);
        if (bitPattern == 9221120237041090561L) {
            throw new NumberFormatException("illegal syntax");
        }
        return Float.intBitsToFloat((int)bitPattern);
    }
    
    public static float parseFloat(final char[] str) throws NumberFormatException {
        return parseFloat(str, 0, str.length);
    }
    
    public static float parseFloat(final char[] str, final int offset, final int length) throws NumberFormatException {
        final long bitPattern = JavaFloatParser.CHAR_ARRAY_PARSER.parseFloatingPointLiteral(str, offset, length);
        if (bitPattern == 9221120237041090561L) {
            throw new NumberFormatException("illegal syntax");
        }
        return Float.intBitsToFloat((int)bitPattern);
    }
    
    static {
        BYTE_ARRAY_PARSER = new JavaFloatBitsFromByteArray();
        CHAR_ARRAY_PARSER = new JavaFloatBitsFromCharArray();
        CHAR_SEQUENCE_PARSER = new JavaFloatBitsFromCharSequence();
    }
}
