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

package ch.randelshofer.fastdoubleparser;

public final class JsonDoubleParser
{
    private static final JsonDoubleBitsFromByteArray BYTE_ARRAY_PARSER;
    private static final JsonDoubleBitsFromCharArray CHAR_ARRAY_PARSER;
    private static final JsonDoubleBitsFromCharSequence CHAR_SEQUENCE_PARSER;
    
    private JsonDoubleParser() {
    }
    
    public static double parseDouble(final CharSequence str) throws NumberFormatException {
        return parseDouble(str, 0, str.length());
    }
    
    public static double parseDouble(final CharSequence str, final int offset, final int length) throws NumberFormatException {
        final long bitPattern = JsonDoubleParser.CHAR_SEQUENCE_PARSER.parseNumber(str, offset, length);
        if (bitPattern == 9221120237041090561L) {
            throw new NumberFormatException("illegal syntax");
        }
        return Double.longBitsToDouble(bitPattern);
    }
    
    public static double parseDouble(final byte[] str) throws NumberFormatException {
        return parseDouble(str, 0, str.length);
    }
    
    public static double parseDouble(final byte[] str, final int offset, final int length) throws NumberFormatException {
        final long bitPattern = JsonDoubleParser.BYTE_ARRAY_PARSER.parseNumber(str, offset, length);
        if (bitPattern == 9221120237041090561L) {
            throw new NumberFormatException("illegal syntax");
        }
        return Double.longBitsToDouble(bitPattern);
    }
    
    public static double parseDouble(final char[] str) throws NumberFormatException {
        return parseDouble(str, 0, str.length);
    }
    
    public static double parseDouble(final char[] str, final int offset, final int length) throws NumberFormatException {
        final long bitPattern = JsonDoubleParser.CHAR_ARRAY_PARSER.parseNumber(str, offset, length);
        if (bitPattern == 9221120237041090561L) {
            throw new NumberFormatException("illegal syntax");
        }
        return Double.longBitsToDouble(bitPattern);
    }
    
    static {
        BYTE_ARRAY_PARSER = new JsonDoubleBitsFromByteArray();
        CHAR_ARRAY_PARSER = new JsonDoubleBitsFromCharArray();
        CHAR_SEQUENCE_PARSER = new JsonDoubleBitsFromCharSequence();
    }
}
