Package com.fasterxml.jackson.core.io
Class UTF32Reader
java.lang.Object
java.io.Reader
com.fasterxml.jackson.core.io.UTF32Reader
- All Implemented Interfaces:
Closeable
,AutoCloseable
,Readable
Since JDK does not come with UTF-32/UCS-4, let's implement a simple
decoder to use.
-
Field Summary
Modifier and TypeFieldDescriptionprotected final boolean
protected byte[]
protected int
Total read byte count; used for error reporting purposesprotected int
Total read character count; used for error reporting purposesprotected final IOContext
protected InputStream
protected int
protected final boolean
protected int
protected char
Although input is fine with full Unicode set, Java still uses 16-bit chars, so we may have to split high-order chars into surrogate pairs.protected char[]
protected static final int
JSON actually limits available Unicode range in the high end to the same as xml (to basically limit UTF-8 max byte sequence length to 4)protected static final char
-
Constructor Summary
ConstructorDescriptionUTF32Reader
(IOContext ctxt, InputStream in, byte[] buf, int ptr, int len, boolean isBigEndian) -
Method Summary
Methods inherited from class java.io.Reader
mark, markSupported, nullReader, read, read, ready, reset, skip, transferTo
-
Field Details
-
LAST_VALID_UNICODE_CHAR
protected static final int LAST_VALID_UNICODE_CHARJSON actually limits available Unicode range in the high end to the same as xml (to basically limit UTF-8 max byte sequence length to 4)- See Also:
-
NC
protected static final char NC- See Also:
-
_context
-
_in
-
_buffer
protected byte[] _buffer -
_ptr
protected int _ptr -
_length
protected int _length -
_bigEndian
protected final boolean _bigEndian -
_surrogate
protected char _surrogateAlthough input is fine with full Unicode set, Java still uses 16-bit chars, so we may have to split high-order chars into surrogate pairs. -
_charCount
protected int _charCountTotal read character count; used for error reporting purposes -
_byteCount
protected int _byteCountTotal read byte count; used for error reporting purposes -
_managedBuffers
protected final boolean _managedBuffers -
_tmpBuf
protected char[] _tmpBuf
-
-
Constructor Details
-
UTF32Reader
public UTF32Reader(IOContext ctxt, InputStream in, byte[] buf, int ptr, int len, boolean isBigEndian)
-
-
Method Details
-
close
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in classReader
- Throws:
IOException
-
read
Although this method is implemented by the base class, AND it should never be called by main code, let's still implement it bit more efficiently just in case- Overrides:
read
in classReader
- Throws:
IOException
-
read
- Specified by:
read
in classReader
- Throws:
IOException
-