Package ch.randelshofer.fastdoubleparser
Class AbstractConfigurableFloatingPointBitsFromByteArrayAscii
java.lang.Object
ch.randelshofer.fastdoubleparser.AbstractNumberParser
ch.randelshofer.fastdoubleparser.AbstractFloatValueParser
ch.randelshofer.fastdoubleparser.AbstractConfigurableFloatingPointBitsFromByteArrayAscii
- Direct Known Subclasses:
ConfigurableDoubleBitsFromByteArrayAscii
abstract class AbstractConfigurableFloatingPointBitsFromByteArrayAscii
extends AbstractFloatValueParser
Configurable floating point parser for input data given in ASCII.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ByteSetprivate final ByteDigitSetprivate final ByteTrieprivate final ByteSetprivate final ByteTrieprivate final ByteSetprivate final ByteTrieprivate final ByteSetFields inherited from class ch.randelshofer.fastdoubleparser.AbstractFloatValueParser
MAX_EXPONENT_NUMBER, MAX_INPUT_LENGTH, MINIMAL_NINETEEN_DIGIT_INTEGERFields inherited from class ch.randelshofer.fastdoubleparser.AbstractNumberParser
CHAR_TO_HEX_MAP, DECIMAL_POINT_CLASS, ILLEGAL_OFFSET_OR_ILLEGAL_LENGTH, OTHER_CLASS, SYNTAX_ERROR, SYNTAX_ERROR_BITS, VALUE_EXCEEDS_LIMITS -
Constructor Summary
ConstructorsConstructorDescriptionAbstractConfigurableFloatingPointBitsFromByteArrayAscii(NumberFormatSymbols symbols, boolean ignoreCase) -
Method Summary
Modifier and TypeMethodDescription(package private) abstract longnan()(package private) abstract longfinal longparseFloatingPointLiteral(byte[] str, int offset, int length) Parses aFloatingPointLiteralproduction with optional leading and trailing white space.private longparseNaNOrInfinity(byte[] str, int index, int endIndex, boolean isNegative, boolean isSignificandSigned) (package private) abstract longprotected doubleslowPathToDouble(byte[] str, int integerStartIndex, int integerEndIndex, int fractionStartIndex, int fractionEndIndex, boolean isSignificandNegative, int exponentValue) (package private) abstract longvalueOfFloatLiteral(byte[] str, int integerStartIndex, int integerEndIndex, int fractionStartIndex, int fractionEndIndex, boolean isSignificandNegative, long significand, int exponent, boolean isSignificandTruncated, int exponentOfTruncatedSignificand, int exponentValue, int startIndex, int endIndex) Computes a float value from the given components of a decimal float literal.Methods inherited from class ch.randelshofer.fastdoubleparser.AbstractNumberParser
charAt, charAt, charAt, checkBounds, checkBounds, lookupHex, lookupHex
-
Field Details
-
digitSet
-
minusSign
-
plusSign
-
decimalSeparator
-
groupingSeparator
-
nan
-
infinity
-
exponentSeparator
-
-
Constructor Details
-
AbstractConfigurableFloatingPointBitsFromByteArrayAscii
public AbstractConfigurableFloatingPointBitsFromByteArrayAscii(NumberFormatSymbols symbols, boolean ignoreCase)
-
-
Method Details
-
nan
abstract long nan()- Returns:
- a NaN constant in the specialized type wrapped in a
long
-
negativeInfinity
abstract long negativeInfinity()- Returns:
- a negative infinity constant in the specialized type wrapped in a
long
-
parseFloatingPointLiteral
public final long parseFloatingPointLiteral(byte[] str, int offset, int length) Parses aFloatingPointLiteralproduction with optional leading and trailing white space.
See- FloatingPointLiteralWithWhiteSpace:
- [WhiteSpace] FloatingPointLiteral [WhiteSpace]
JavaDoubleParserfor the grammar ofFloatingPointLiteral.- Parameters:
str- a string containing aFloatingPointLiteralWithWhiteSpaceoffset- start offset ofFloatingPointLiteralWithWhiteSpaceinstrlength- length ofFloatingPointLiteralWithWhiteSpaceinstr- Returns:
- the bit pattern of the parsed value, if the input is legal;
otherwise,
-1L.
-
parseNaNOrInfinity
private long parseNaNOrInfinity(byte[] str, int index, int endIndex, boolean isNegative, boolean isSignificandSigned) -
positiveInfinity
abstract long positiveInfinity()- Returns:
- a positive infinity constant in the specialized type wrapped in a
long
-
valueOfFloatLiteral
abstract long valueOfFloatLiteral(byte[] str, int integerStartIndex, int integerEndIndex, int fractionStartIndex, int fractionEndIndex, boolean isSignificandNegative, long significand, int exponent, boolean isSignificandTruncated, int exponentOfTruncatedSignificand, int exponentValue, int startIndex, int endIndex) Computes a float value from the given components of a decimal float literal.- Parameters:
str- the string that contains the float literal (and maybe more)integerStartIndex- the start index (inclusive) of the integer part of the significand inside the stringintegerEndIndex- the end index (exclusive) of the integer part of the significand the stringfractionStartIndex- the start index (inclusive) of the fraction part of the significand inside the stringfractionEndIndex- the end index (exclusive) of the fraction part of the significand the stringisSignificandNegative- whether the significand value is negativesignificand- the significand of the float value (can be truncated)exponent- the exponent of the float value considering the significandisSignificandTruncated- whether the significand is truncatedexponentOfTruncatedSignificand- the exponent value of the truncated significandexponentValue- the exponent of the float value without considering the significandstartIndex- the start index of the literal in strendIndex- the end index of the literal in str- Returns:
- the bit pattern of the parsed value, if the input is legal;
otherwise,
-1L.
-
slowPathToDouble
protected double slowPathToDouble(byte[] str, int integerStartIndex, int integerEndIndex, int fractionStartIndex, int fractionEndIndex, boolean isSignificandNegative, int exponentValue)
-