com.fasterxml.jackson.dataformat.smile

## Class SmileParser

- java.lang.Object
- - com.fasterxml.jackson.core.JsonParser
  - - com.fasterxml.jackson.core.base.ParserMinimalBase
    - - com.fasterxml.jackson.core.base.ParserBase
      - - com.fasterxml.jackson.dataformat.smile.SmileParser

All Implemented Interfaces:
  com.fasterxml.jackson.core.Versioned, Closeable, AutoCloseable

    public class SmileParser
    extends com.fasterxml.jackson.core.base.ParserBase

### Nested Class Summary

Nested Classes
`static class` `SmileParser.Feature` Enumeration that defines all togglable features for Smile generators.

### Nested classes/interfaces inherited from class com.fasterxml.jackson.core.JsonParser

`com.fasterxml.jackson.core.JsonParser.NumberType`

### Field Summary

Fields
`protected boolean` `_bufferRecyclable` Flag that indicates whether the input buffer is recycable (and needs to be returned to recycler once we are done) or not.
`protected boolean` `_got32BitFloat` Specific flag that is set when we encountered a 32-bit floating point value; needed since numeric super classes do not track distinction between float and double, but Smile format does, and we want to retain that separation.
`protected byte[]` `_inputBuffer` Current buffer from which data is read; generally data is read into buffer from input source, but in some cases pre-loaded buffer is handed to the parser.
`protected InputStream` `_inputStream` Input stream that can be used for reading more content, if one in use.
`protected boolean` `_mayContainRawBinary` Flag that indicates whether content can legally have raw (unquoted) binary data.
`protected com.fasterxml.jackson.core.ObjectCodec` `_objectCodec` Codec used for data binding when (if) requested.
`protected int` `_quad1` Quads used for hash calculation
`protected int` `_quad2` Quads used for hash calculation
`protected int[]` `_quadBuffer` Temporary buffer used for name parsing.
`protected int` `_seenNameCount`
`protected String[]` `_seenNames` Array of recently seen field names, which may be back referenced by later fields.
`protected int` `_seenStringValueCount`
`protected String[]` `_seenStringValues` Array of recently seen field names, which may be back referenced by later fields Defaults set to disable handling if no header found.
`protected SmileBufferRecycler<String>` `_smileBufferRecycler` Helper object used for low-level recycling of Smile-generator specific buffers.
`protected static ThreadLocal<SoftReference<SmileBufferRecycler<String>>>` `_smileRecyclerRef` `ThreadLocal` contains a `SoftReference` to a buffer recycler used to provide a low-cost buffer recycling for Smile-specific buffers.
`protected com.fasterxml.jackson.core.sym.BytesToNameCanonicalizer` `_symbols` Symbol table that contains field names encountered so far
`protected boolean` `_tokenIncomplete` Flag that indicates that the current token has not yet been fully processed, and needs to be finished for some access (or skipped to obtain the next token)
`protected int` `_tokenOffsetForTotal` Alternative to `ParserBase._tokenInputTotal` that will only contain offset within input buffer, as int.
`protected int` `_typeAsInt` Type byte of the current token (as in)

### Fields inherited from class com.fasterxml.jackson.core.base.ParserBase

`_binaryValue, _byteArrayBuilder, _closed, _currInputProcessed, _currInputRow, _currInputRowStart, _expLength, _fractLength, _inputEnd, _inputPtr, _intLength, _ioContext, _nameCopied, _nameCopyBuffer, _nextToken, _numberBigDecimal, _numberBigInt, _numberDouble, _numberInt, _numberLong, _numberNegative, _numTypesValid, _parsingContext, _textBuffer, _tokenInputCol, _tokenInputRow, _tokenInputTotal, CHAR_NULL, INT_0, INT_9, INT_MINUS, INT_PLUS, NR_BIGDECIMAL, NR_BIGINT, NR_DOUBLE, NR_INT, NR_LONG, NR_UNKNOWN`

### Fields inherited from class com.fasterxml.jackson.core.base.ParserMinimalBase

`_currToken, _lastClearedToken, INT_BACKSLASH, INT_COLON, INT_COMMA, INT_CR, INT_e, INT_E, INT_HASH, INT_LBRACKET, INT_LCURLY, INT_LF, INT_PERIOD, INT_QUOTE, INT_RBRACKET, INT_RCURLY, INT_SLASH, INT_SPACE, INT_TAB`

### Fields inherited from class com.fasterxml.jackson.core.JsonParser

`_features`

### Constructor Summary

Constructors
Constructor and Description
`SmileParser(com.fasterxml.jackson.core.io.IOContext ctxt, int parserFeatures, int smileFeatures, com.fasterxml.jackson.core.ObjectCodec codec, com.fasterxml.jackson.core.sym.BytesToNameCanonicalizer sym, InputStream in, byte[] inputBuffer, int start, int end, boolean bufferRecyclable)`

### Method Summary

Methods
`protected void` `_closeInput()`
`protected String` `_decodeShortAsciiValue(int len)`
`protected String` `_decodeShortUnicodeValue(int len)`
`protected void` `_finishNumberToken(int tb)`
`protected void` `_finishString()`
`protected void` `_finishToken()` Method called to finish parsing of a token so that token contents are retrievable
`protected com.fasterxml.jackson.core.JsonToken` `_handleFieldName()` Method that handles initial token type recognition for token that has to be either FIELD_NAME or END_OBJECT.
`protected void` `_loadToHaveAtLeast(int minAvailable)` Helper method that will try to load at least specified number bytes in input buffer, possible moving existing data around if necessary
`protected void` `_parseNumericValue(int expType)`
`protected void` `_releaseBuffers()` Method called to release internal buffers owned by the base reader.
`protected void` `_reportInvalidChar(int c)`
`protected void` `_reportInvalidInitial(int mask)`
`protected void` `_reportInvalidOther(int mask)`
`protected void` `_reportInvalidOther(int mask, int ptr)`
`protected void` `_reportInvalidSharedName(int index)`
`protected void` `_reportInvalidSharedStringValue(int index)`
`protected void` `_skip7BitBinary()` Helper method for skipping length-prefixed binary data section
`protected void` `_skipBytes(int len)`
`protected void` `_skipIncomplete()` Method called to skip remainders of an incomplete token, when contents themselves will not be needed any more
`protected static SmileBufferRecycler<String>` `_smileBufferRecycler()`
`void` `close()`
`byte[]` `getBinaryValue(com.fasterxml.jackson.core.Base64Variant b64variant)`
`com.fasterxml.jackson.core.ObjectCodec` `getCodec()`
`com.fasterxml.jackson.core.JsonLocation` `getCurrentLocation()` Overridden since we do not really have character-based locations, but we do have byte offset to specify.
`Object` `getEmbeddedObject()`
`Object` `getInputSource()`
`com.fasterxml.jackson.core.JsonParser.NumberType` `getNumberType()`
`String` `getText()` Method for accessing textual representation of the current event; if no current event (before first call to `nextToken()`, or after encountering end-of-input), returns null.
`char[]` `getTextCharacters()`
`int` `getTextLength()`
`int` `getTextOffset()`
`com.fasterxml.jackson.core.JsonLocation` `getTokenLocation()` Overridden since we do not really have character-based locations, but we do have byte offset to specify.
`String` `getValueAsString()`
`String` `getValueAsString(String defaultValue)`
`protected boolean` `handleSignature(boolean consumeFirstByte, boolean throwException)` Helper method called when it looks like input might contain the signature; and it is necessary to detect and handle signature to get configuration information it might have.
`boolean` `hasTextCharacters()`
`protected boolean` `loadMore()`
`boolean` `mayContainRawBinary()`
`Boolean` `nextBooleanValue()`
`boolean` `nextFieldName(com.fasterxml.jackson.core.SerializableString str)`
`int` `nextIntValue(int defaultValue)`
`long` `nextLongValue(long defaultValue)`
`String` `nextTextValue()`
`com.fasterxml.jackson.core.JsonToken` `nextToken()`
`int` `readBinaryValue(com.fasterxml.jackson.core.Base64Variant b64variant, OutputStream out)`
`int` `releaseBuffered(OutputStream out)`
`void` `setCodec(com.fasterxml.jackson.core.ObjectCodec c)`
`com.fasterxml.jackson.core.Version` `version()`

### Methods inherited from class com.fasterxml.jackson.core.base.ParserBase

`_decodeBase64Escape, _decodeBase64Escape, _decodeEscaped, _eofAsNextChar, _getByteArrayBuilder, _handleEOF, _reportMismatchedEndMarker, convertNumberToBigDecimal, convertNumberToBigInteger, convertNumberToDouble, convertNumberToInt, convertNumberToLong, getBigIntegerValue, getCurrentName, getDecimalValue, getDoubleValue, getFloatValue, getIntValue, getLongValue, getNumberValue, getParsingContext, getTokenCharacterOffset, getTokenColumnNr, getTokenLineNr, isClosed, loadMoreGuaranteed, overrideCurrentName, reportInvalidBase64Char, reportInvalidBase64Char, reportInvalidNumber, reportOverflowInt, reportOverflowLong, reportUnexpectedNumberChar, reset, resetAsNaN, resetFloat, resetInt`

### Methods inherited from class com.fasterxml.jackson.core.base.ParserMinimalBase

`_ascii, _asciiBytes, _constructError, _decodeBase64, _getCharDesc, _handleUnrecognizedCharacterEscape, _hasTextualNull, _reportBase64EOF, _reportError, _reportInvalidBase64, _reportInvalidEOF, _reportInvalidEOF, _reportInvalidEOFInValue, _reportMissingRootWS, _reportUnexpectedChar, _throwInternal, _throwInvalidSpace, _throwUnquotedSpace, _wrapError, clearCurrentToken, getCurrentToken, getCurrentTokenId, getLastClearedToken, getValueAsBoolean, getValueAsDouble, getValueAsInt, getValueAsLong, hasCurrentToken, nextValue, skipChildren`

### Methods inherited from class com.fasterxml.jackson.core.JsonParser

`_codec, _constructError, _reportUnsupportedOperation, canReadObjectId, canReadTypeId, canUseSchema, configure, disable, enable, getBinaryValue, getBooleanValue, getByteValue, getFeatureMask, getObjectId, getSchema, getShortValue, getTypeId, getValueAsBoolean, getValueAsDouble, getValueAsInt, getValueAsLong, isEnabled, isExpectedStartArrayToken, readBinaryValue, readValueAs, readValueAs, readValueAsTree, readValuesAs, readValuesAs, releaseBuffered, requiresCustomCodec, setFeatureMask, setSchema`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### _objectCodec

    protected com.fasterxml.jackson.core.ObjectCodec _objectCodec

Codec used for data binding when (if) requested.

#### _mayContainRawBinary

    protected boolean _mayContainRawBinary

Flag that indicates whether content can legally have raw (unquoted) binary data. Since this information is included both in header and in actual binary data blocks there is redundancy, and we want to ensure settings are compliant. Using application may also want to know this setting in case it does some direct (random) access.

#### _smileBufferRecycler

    protected final SmileBufferRecycler<String> _smileBufferRecycler

Helper object used for low-level recycling of Smile-generator specific buffers.

#### _inputStream

    protected InputStream _inputStream

Input stream that can be used for reading more content, if one in use. May be null, if input comes just as a full buffer, or if the stream has been closed.

#### _inputBuffer

    protected byte[] _inputBuffer

Current buffer from which data is read; generally data is read into buffer from input source, but in some cases pre-loaded buffer is handed to the parser.

#### _bufferRecyclable

    protected boolean _bufferRecyclable

Flag that indicates whether the input buffer is recycable (and needs to be returned to recycler once we are done) or not.

If it is not, it also means that parser can NOT modify underlying buffer.

#### _tokenIncomplete

    protected boolean _tokenIncomplete

Flag that indicates that the current token has not yet been fully processed, and needs to be finished for some access (or skipped to obtain the next token)

#### _typeAsInt

    protected int _typeAsInt

Type byte of the current token (as in)

#### _got32BitFloat

    protected boolean _got32BitFloat

Specific flag that is set when we encountered a 32-bit floating point value; needed since numeric super classes do not track distinction between float and double, but Smile format does, and we want to retain that separation.

#### _tokenOffsetForTotal

    protected int _tokenOffsetForTotal

Alternative to `ParserBase._tokenInputTotal` that will only contain offset within input buffer, as int.

#### _symbols

    protected final com.fasterxml.jackson.core.sym.BytesToNameCanonicalizer _symbols

Symbol table that contains field names encountered so far

#### _quadBuffer

    protected int[] _quadBuffer

Temporary buffer used for name parsing.

#### _quad1

    protected int _quad1

Quads used for hash calculation

#### _quad2

    protected int _quad2

Quads used for hash calculation

#### _seenNames

    protected String[] _seenNames

Array of recently seen field names, which may be back referenced by later fields. Defaults set to enable handling even if no header found.

#### _seenNameCount

    protected int _seenNameCount

#### _seenStringValues

    protected String[] _seenStringValues

Array of recently seen field names, which may be back referenced by later fields Defaults set to disable handling if no header found.

#### _seenStringValueCount

    protected int _seenStringValueCount

#### _smileRecyclerRef

    protected static final ThreadLocal<SoftReference<SmileBufferRecycler<String>>> _smileRecyclerRef

`ThreadLocal` contains a `SoftReference` to a buffer recycler used to provide a low-cost buffer recycling for Smile-specific buffers.

### Constructor Detail

#### SmileParser

    public SmileParser(com.fasterxml.jackson.core.io.IOContext ctxt,
               int parserFeatures,
               int smileFeatures,
               com.fasterxml.jackson.core.ObjectCodec codec,
               com.fasterxml.jackson.core.sym.BytesToNameCanonicalizer sym,
               InputStream in,
               byte[] inputBuffer,
               int start,
               int end,
               boolean bufferRecyclable)

### Method Detail

#### getCodec

    public com.fasterxml.jackson.core.ObjectCodec getCodec()

Specified by:
  `getCodec` in class `com.fasterxml.jackson.core.JsonParser`

#### setCodec

    public void setCodec(com.fasterxml.jackson.core.ObjectCodec c)

Specified by:
  `setCodec` in class `com.fasterxml.jackson.core.JsonParser`

#### handleSignature

    protected boolean handleSignature(boolean consumeFirstByte,
                          boolean throwException)
                               throws IOException

Helper method called when it looks like input might contain the signature; and it is necessary to detect and handle signature to get configuration information it might have.

Returns:
  True if valid signature was found and handled; false if not
Throws:
  `IOException`

#### _smileBufferRecycler

    protected static final SmileBufferRecycler<String> _smileBufferRecycler()

#### version

    public com.fasterxml.jackson.core.Version version()

Specified by:
  `version` in interface `com.fasterxml.jackson.core.Versioned`
Overrides:
  `version` in class `com.fasterxml.jackson.core.base.ParserBase`

#### releaseBuffered

    public int releaseBuffered(OutputStream out)
                        throws IOException

Overrides:
  `releaseBuffered` in class `com.fasterxml.jackson.core.JsonParser`
Throws:
  `IOException`

#### getInputSource

    public Object getInputSource()

Overrides:
  `getInputSource` in class `com.fasterxml.jackson.core.JsonParser`

#### getTokenLocation

    public com.fasterxml.jackson.core.JsonLocation getTokenLocation()

Overridden since we do not really have character-based locations, but we do have byte offset to specify.

Overrides:
  `getTokenLocation` in class `com.fasterxml.jackson.core.base.ParserBase`

#### getCurrentLocation

    public com.fasterxml.jackson.core.JsonLocation getCurrentLocation()

Overridden since we do not really have character-based locations, but we do have byte offset to specify.

Overrides:
  `getCurrentLocation` in class `com.fasterxml.jackson.core.base.ParserBase`

#### loadMore

    protected final boolean loadMore()
                              throws IOException

Specified by:
  `loadMore` in class `com.fasterxml.jackson.core.base.ParserBase`
Throws:
  `IOException`

#### _loadToHaveAtLeast

    protected final void _loadToHaveAtLeast(int minAvailable)
                                     throws IOException

Helper method that will try to load at least specified number bytes in input buffer, possible moving existing data around if necessary

Throws:
  `IOException`

#### _closeInput

    protected void _closeInput()
                        throws IOException

Specified by:
  `_closeInput` in class `com.fasterxml.jackson.core.base.ParserBase`
Throws:
  `IOException`

#### _finishString

    protected void _finishString()
                          throws IOException

Specified by:
  `_finishString` in class `com.fasterxml.jackson.core.base.ParserBase`
Throws:
  `IOException`

#### close

    public void close()
               throws IOException

Specified by:
  `close` in interface `Closeable`
Specified by:
  `close` in interface `AutoCloseable`
Overrides:
  `close` in class `com.fasterxml.jackson.core.base.ParserBase`
Throws:
  `IOException`

#### hasTextCharacters

    public boolean hasTextCharacters()

Overrides:
  `hasTextCharacters` in class `com.fasterxml.jackson.core.base.ParserBase`

#### _releaseBuffers

    protected void _releaseBuffers()
                            throws IOException

Method called to release internal buffers owned by the base reader. This may be called along with `_closeInput()` (for example, when explicitly closing this reader instance), or separately (if need be).

Overrides:
  `_releaseBuffers` in class `com.fasterxml.jackson.core.base.ParserBase`
Throws:
  `IOException`

#### mayContainRawBinary

    public boolean mayContainRawBinary()

#### nextToken

    public com.fasterxml.jackson.core.JsonToken nextToken()
                                                   throws IOException

Specified by:
  `nextToken` in class `com.fasterxml.jackson.core.base.ParserMinimalBase`
Throws:
  `IOException`

#### getNumberType

    public com.fasterxml.jackson.core.JsonParser.NumberType getNumberType()
                                                                   throws IOException

Overrides:
  `getNumberType` in class `com.fasterxml.jackson.core.base.ParserBase`
Throws:
  `IOException`

#### nextFieldName

    public boolean nextFieldName(com.fasterxml.jackson.core.SerializableString str)
                          throws IOException

Overrides:
  `nextFieldName` in class `com.fasterxml.jackson.core.JsonParser`
Throws:
  `IOException`

#### nextTextValue

    public String nextTextValue()
                         throws IOException

Overrides:
  `nextTextValue` in class `com.fasterxml.jackson.core.JsonParser`
Throws:
  `IOException`

#### nextIntValue

    public int nextIntValue(int defaultValue)
                     throws IOException

Overrides:
  `nextIntValue` in class `com.fasterxml.jackson.core.JsonParser`
Throws:
  `IOException`

#### nextLongValue

    public long nextLongValue(long defaultValue)
                       throws IOException

Overrides:
  `nextLongValue` in class `com.fasterxml.jackson.core.JsonParser`
Throws:
  `IOException`

#### nextBooleanValue

    public Boolean nextBooleanValue()
                             throws IOException

Overrides:
  `nextBooleanValue` in class `com.fasterxml.jackson.core.JsonParser`
Throws:
  `IOException`

#### getText

    public String getText()
                   throws IOException

Method for accessing textual representation of the current event; if no current event (before first call to `nextToken()`, or after encountering end-of-input), returns null. Method can be called for any event.

Specified by:
  `getText` in class `com.fasterxml.jackson.core.base.ParserMinimalBase`
Throws:
  `IOException`

#### getTextCharacters

    public char[] getTextCharacters()
                             throws IOException

Specified by:
  `getTextCharacters` in class `com.fasterxml.jackson.core.base.ParserMinimalBase`
Throws:
  `IOException`

#### getTextLength

    public int getTextLength()
                      throws IOException

Specified by:
  `getTextLength` in class `com.fasterxml.jackson.core.base.ParserMinimalBase`
Throws:
  `IOException`

#### getTextOffset

    public int getTextOffset()
                      throws IOException

Specified by:
  `getTextOffset` in class `com.fasterxml.jackson.core.base.ParserMinimalBase`
Throws:
  `IOException`

#### getValueAsString

    public String getValueAsString()
                            throws IOException

Overrides:
  `getValueAsString` in class `com.fasterxml.jackson.core.JsonParser`
Throws:
  `IOException`

#### getValueAsString

    public String getValueAsString(String defaultValue)
                            throws IOException

Overrides:
  `getValueAsString` in class `com.fasterxml.jackson.core.base.ParserMinimalBase`
Throws:
  `IOException`

#### getBinaryValue

    public byte[] getBinaryValue(com.fasterxml.jackson.core.Base64Variant b64variant)
                          throws IOException

Specified by:
  `getBinaryValue` in class `com.fasterxml.jackson.core.base.ParserMinimalBase`
Throws:
  `IOException`

#### getEmbeddedObject

    public Object getEmbeddedObject()
                             throws IOException

Overrides:
  `getEmbeddedObject` in class `com.fasterxml.jackson.core.base.ParserBase`
Throws:
  `IOException`

#### readBinaryValue

    public int readBinaryValue(com.fasterxml.jackson.core.Base64Variant b64variant,
                      OutputStream out)
                        throws IOException

Overrides:
  `readBinaryValue` in class `com.fasterxml.jackson.core.JsonParser`
Throws:
  `IOException`

#### _handleFieldName

    protected final com.fasterxml.jackson.core.JsonToken _handleFieldName()
                                                                   throws IOException

Method that handles initial token type recognition for token that has to be either FIELD_NAME or END_OBJECT.

Throws:
  `IOException`

#### _parseNumericValue

    protected void _parseNumericValue(int expType)
                               throws IOException

Overrides:
  `_parseNumericValue` in class `com.fasterxml.jackson.core.base.ParserBase`
Throws:
  `IOException`

#### _finishToken

    protected final void _finishToken()
                               throws IOException

Method called to finish parsing of a token so that token contents are retrievable

Throws:
  `IOException`

#### _finishNumberToken

    protected final void _finishNumberToken(int tb)
                                     throws IOException

Throws:
  `IOException`

#### _decodeShortAsciiValue

    protected final String _decodeShortAsciiValue(int len)
                                           throws IOException

Throws:
  `IOException`

#### _decodeShortUnicodeValue

    protected final String _decodeShortUnicodeValue(int len)
                                             throws IOException

Throws:
  `IOException`

#### _skipIncomplete

    protected void _skipIncomplete()
                            throws IOException

Method called to skip remainders of an incomplete token, when contents themselves will not be needed any more

Throws:
  `IOException`

#### _skipBytes

    protected void _skipBytes(int len)
                       throws IOException

Throws:
  `IOException`

#### _skip7BitBinary

    protected void _skip7BitBinary()
                            throws IOException

Helper method for skipping length-prefixed binary data section

Throws:
  `IOException`

#### _reportInvalidSharedName

    protected void _reportInvalidSharedName(int index)
                                     throws IOException

Throws:
  `IOException`

#### _reportInvalidSharedStringValue

    protected void _reportInvalidSharedStringValue(int index)
                                            throws IOException

Throws:
  `IOException`

#### _reportInvalidChar

    protected void _reportInvalidChar(int c)
                               throws com.fasterxml.jackson.core.JsonParseException

Throws:
  `com.fasterxml.jackson.core.JsonParseException`

#### _reportInvalidInitial

    protected void _reportInvalidInitial(int mask)
                                  throws com.fasterxml.jackson.core.JsonParseException

Throws:
  `com.fasterxml.jackson.core.JsonParseException`

#### _reportInvalidOther

    protected void _reportInvalidOther(int mask)
                                throws com.fasterxml.jackson.core.JsonParseException

Throws:
  `com.fasterxml.jackson.core.JsonParseException`

#### _reportInvalidOther

    protected void _reportInvalidOther(int mask,
                           int ptr)
                                throws com.fasterxml.jackson.core.JsonParseException

Throws:
  `com.fasterxml.jackson.core.JsonParseException`