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
Fields Modifier and Type Field Description private ByteSetdecimalSeparatorprivate ByteDigitSetdigitSetprivate ByteTrieexponentSeparatorprivate ByteSetgroupingSeparatorprivate ByteTrieinfinityprivate ByteSetminusSignprivate ByteTrienanprivate ByteSetplusSign-
Fields inherited from class ch.randelshofer.fastdoubleparser.AbstractFloatValueParser
MAX_EXPONENT_NUMBER, MAX_INPUT_LENGTH, MINIMAL_NINETEEN_DIGIT_INTEGER
-
Fields 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
Constructors Constructor Description AbstractConfigurableFloatingPointBitsFromByteArrayAscii(NumberFormatSymbols symbols, boolean ignoreCase)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description (package private) abstract longnan()(package private) abstract longnegativeInfinity()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 longpositiveInfinity()protected 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 Detail
-
digitSet
private final ByteDigitSet digitSet
-
minusSign
private final ByteSet minusSign
-
plusSign
private final ByteSet plusSign
-
decimalSeparator
private final ByteSet decimalSeparator
-
groupingSeparator
private final ByteSet groupingSeparator
-
nan
private final ByteTrie nan
-
infinity
private final ByteTrie infinity
-
exponentSeparator
private final ByteTrie exponentSeparator
-
-
Constructor Detail
-
AbstractConfigurableFloatingPointBitsFromByteArrayAscii
public AbstractConfigurableFloatingPointBitsFromByteArrayAscii(NumberFormatSymbols symbols, boolean ignoreCase)
-
-
Method Detail
-
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)
-
-