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

package ch.randelshofer.fastdoubleparser;

final class ConfigurableDoubleBitsFromCharArray extends AbstractConfigurableFloatingPointBitsFromCharArray
{
    public ConfigurableDoubleBitsFromCharArray(final NumberFormatSymbols symbols, final boolean ignoreCase) {
        super(symbols, ignoreCase);
    }
    
    @Override
    long nan() {
        return Double.doubleToRawLongBits(Double.NaN);
    }
    
    @Override
    long negativeInfinity() {
        return Double.doubleToRawLongBits(Double.NEGATIVE_INFINITY);
    }
    
    @Override
    long positiveInfinity() {
        return Double.doubleToRawLongBits(Double.POSITIVE_INFINITY);
    }
    
    @Override
    long valueOfFloatLiteral(final char[] str, final int integerStartIndex, final int integerEndIndex, final int fractionStartIndex, final int fractionEndIndex, final boolean isSignificandNegative, final long significand, final int exponent, final boolean isSignificandTruncated, final int exponentOfTruncatedSignificand, final int exponentValue, final int startIndex, final int endIndex) {
        final double d = FastDoubleMath.tryDecFloatToDoubleTruncated(isSignificandNegative, significand, exponent, isSignificandTruncated, exponentOfTruncatedSignificand);
        return Double.doubleToRawLongBits(Double.isNaN(d) ? this.slowPathToDouble(str, integerStartIndex, integerEndIndex, fractionStartIndex, fractionEndIndex, isSignificandNegative, exponentValue) : d);
    }
}
