Package ch.randelshofer.fastdoubleparser
Class AbstractJsonFloatingPointBitsFromCharSequence
- java.lang.Object
-
- ch.randelshofer.fastdoubleparser.AbstractNumberParser
-
- ch.randelshofer.fastdoubleparser.AbstractFloatValueParser
-
- ch.randelshofer.fastdoubleparser.AbstractJsonFloatingPointBitsFromCharSequence
-
- Direct Known Subclasses:
JsonDoubleBitsFromCharSequence
abstract class AbstractJsonFloatingPointBitsFromCharSequence extends AbstractFloatValueParser
Parses a JSONnumberfrom aCharSequence.This class should have a type parameter for the return value of its parse methods. Unfortunately Java does not support type parameters for primitive types. As a workaround we use
long. Alonghas enough bits to fit adoublevalue or afloatvalue.See
JsonDoubleParserfor the grammar ofNumber.
-
-
Field Summary
-
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 AbstractJsonFloatingPointBitsFromCharSequence()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description longparseNumber(java.lang.CharSequence str, int offset, int length)Parses anumberproduction.(package private) abstract longvalueOfFloatLiteral(java.lang.CharSequence str, int startIndex, int endIndex, boolean isNegative, long significand, int exponent, boolean isSignificandTruncated, int exponentOfTruncatedSignificand)Computes a float value from the given components of anumberliteral.-
Methods inherited from class ch.randelshofer.fastdoubleparser.AbstractNumberParser
charAt, charAt, charAt, checkBounds, checkBounds, lookupHex, lookupHex
-
-
-
-
Method Detail
-
parseNumber
public final long parseNumber(java.lang.CharSequence str, int offset, int length)Parses anumberproduction.See
JsonDoubleParserfor the grammar ofnumber.- 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.
-
valueOfFloatLiteral
abstract long valueOfFloatLiteral(java.lang.CharSequence str, int startIndex, int endIndex, boolean isNegative, long significand, int exponent, boolean isSignificandTruncated, int exponentOfTruncatedSignificand)Computes a float value from the given components of anumberliteral.- Parameters:
str- the string that contains the number literal (and maybe more)startIndex- the start index (inclusive) of the number literal inside the stringendIndex- the end index (exclusive) of the number literal inside the stringisNegative- whether the float value is negativesignificand- the significand of the float value (can be truncated)exponent- the exponent of the float valueisSignificandTruncated- whether the significand is truncatedexponentOfTruncatedSignificand- the exponent value of the truncated significand- Returns:
- the bit pattern of the parsed value, if the input is legal;
otherwise,
-1L.
-
-