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
public class UTF32Reader extends Reader
Since JDK does not come with UTF-32/UCS-4, let's implement a simple decoder to use.
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
_bigEndian
protected byte[]
_buffer
protected int
_byteCount
Total read byte count; used for error reporting purposesprotected int
_charCount
Total read character count; used for error reporting purposesprotected IOContext
_context
protected InputStream
_in
protected int
_length
protected boolean
_managedBuffers
protected int
_ptr
protected char
_surrogate
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[]
_tmpBuf
protected static int
LAST_VALID_UNICODE_CHAR
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 char
NC
-
Constructor Summary
Constructors Constructor Description UTF32Reader(IOContext ctxt, InputStream in, byte[] buf, int ptr, int len, boolean isBigEndian)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
int
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 caseint
read(char[] cbuf, int start, int len)
-
Methods inherited from class java.io.Reader
mark, markSupported, nullReader, read, read, ready, reset, skip, transferTo
-
-
-
-
Field Detail
-
LAST_VALID_UNICODE_CHAR
protected static final int LAST_VALID_UNICODE_CHAR
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)- See Also:
- Constant Field Values
-
NC
protected static final char NC
- See Also:
- Constant Field Values
-
_context
protected final IOContext _context
-
_in
protected InputStream _in
-
_buffer
protected byte[] _buffer
-
_ptr
protected int _ptr
-
_length
protected int _length
-
_bigEndian
protected final boolean _bigEndian
-
_surrogate
protected char _surrogate
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.
-
_charCount
protected int _charCount
Total read character count; used for error reporting purposes
-
_byteCount
protected int _byteCount
Total read byte count; used for error reporting purposes
-
_managedBuffers
protected final boolean _managedBuffers
-
_tmpBuf
protected char[] _tmpBuf
-
-
Constructor Detail
-
UTF32Reader
public UTF32Reader(IOContext ctxt, InputStream in, byte[] buf, int ptr, int len, boolean isBigEndian)
-
-
Method Detail
-
close
public void close() throws IOException
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Specified by:
close
in classReader
- Throws:
IOException
-
read
public int read() throws IOException
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
public int read(char[] cbuf, int start, int len) throws IOException
- Specified by:
read
in classReader
- Throws:
IOException
-
-