private static class Utf8.DecodeUtil
extends java.lang.Object
String
. Callers are responsible for extracting
bytes (possibly using Unsafe methods), and checking remaining bytes. All other UTF-8 validity
checks and codepoint conversion happen in this class.Modifier | Constructor and Description |
---|---|
private |
DecodeUtil() |
Modifier and Type | Method and Description |
---|---|
private static void |
handleFourBytes(byte byte1,
byte byte2,
byte byte3,
byte byte4,
char[] resultArr,
int resultPos) |
private static void |
handleOneByte(byte byte1,
char[] resultArr,
int resultPos) |
private static void |
handleThreeBytes(byte byte1,
byte byte2,
byte byte3,
char[] resultArr,
int resultPos) |
private static void |
handleTwoBytes(byte byte1,
byte byte2,
char[] resultArr,
int resultPos) |
private static char |
highSurrogate(int codePoint) |
private static boolean |
isNotTrailingByte(byte b)
Returns whether the byte is not a valid continuation of the form '10XXXXXX'.
|
private static boolean |
isOneByte(byte b)
Returns whether this is a single-byte codepoint (i.e., ASCII) with the form '0XXXXXXX'.
|
private static boolean |
isThreeBytes(byte b)
Returns whether this is a three-byte codepoint with the form '110XXXXX'.
|
private static boolean |
isTwoBytes(byte b)
Returns whether this is a two-byte codepoint with the form '10XXXXXX'.
|
private static char |
lowSurrogate(int codePoint) |
private static int |
trailingByteValue(byte b)
Returns the actual value of the trailing byte (removes the prefix '10') for composition.
|
private static boolean isOneByte(byte b)
private static boolean isTwoBytes(byte b)
private static boolean isThreeBytes(byte b)
private static void handleOneByte(byte byte1, char[] resultArr, int resultPos)
private static void handleTwoBytes(byte byte1, byte byte2, char[] resultArr, int resultPos) throws InvalidProtocolBufferException
InvalidProtocolBufferException
private static void handleThreeBytes(byte byte1, byte byte2, byte byte3, char[] resultArr, int resultPos) throws InvalidProtocolBufferException
InvalidProtocolBufferException
private static void handleFourBytes(byte byte1, byte byte2, byte byte3, byte byte4, char[] resultArr, int resultPos) throws InvalidProtocolBufferException
InvalidProtocolBufferException
private static boolean isNotTrailingByte(byte b)
private static int trailingByteValue(byte b)
private static char highSurrogate(int codePoint)
private static char lowSurrogate(int codePoint)