com.fasterxml.jackson.core.io
Class UTF32Reader

java.lang.Object
  extended by java.io.Reader
      extended by com.fasterxml.jackson.core.io.UTF32Reader
All Implemented Interfaces:
Closeable, 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
protected  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  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
           
 
Fields inherited from class java.io.Reader
lock
 
Constructor Summary
UTF32Reader(IOContext ctxt, InputStream in, byte[] buf, int ptr, int len, boolean isBigEndian)
           
 
Method Summary
 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, read, read, ready, reset, skip
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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


Copyright © 2008-2016 FasterXML. All Rights Reserved.