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 final boolean`
`_bigEndian`
`protected byte[]`
`_buffer`
`protected int`
`_byteCount`
Total read byte count; used for error reporting purposes
`protected int`
`_charCount`
Total read character count; used for error reporting purposes
`protected final IOContext`
`_context`
`protected InputStream`
`_in`
`protected int`
`_length`
`protected final 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 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)
`protected static final char`
`NC`

### Fields inherited from class java.io.Reader

`lock`

## Constructor Summary

Constructors
Constructor
Description
`UTF32Reader(IOContext ctxt, InputStream in, byte[] buf, int ptr, int len, boolean isBigEndian)`

## Method Summary

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 case
`int`
`read(char[] cbuf, int start, int len)`

### Methods inherited from class java.io.Reader

`mark, markSupported, nullReader, read, read, ready, reset, skip, transferTo`

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

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

## Field Details

### 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 Details

### UTF32Reader

public UTF32Reader(IOContext ctxt, InputStream in, byte[] buf, int ptr, int len, boolean isBigEndian)

## Method Details

### close

public void close() throws IOException

Specified by:
  `close` in interface `AutoCloseable`
Specified by:
  `close` in interface `Closeable`
Specified by:
  `close` in class `Reader`
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 class `Reader`
Throws:
  `IOException`

### read

public int read(char[] cbuf, int start, int len) throws IOException

Specified by:
  `read` in class `Reader`
Throws:
  `IOException`