Class Utf8.DecodeUtil

java.lang.Object
com.google.protobuf.Utf8.DecodeUtil
Enclosing class:
Utf8

private static class Utf8.DecodeUtil extends Object
Utility methods for decoding bytes into 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.
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    private
     
  • Method Summary

    Modifier and Type
    Method
    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
    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
    Returns the actual value of the trailing byte (removes the prefix '10') for composition.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • DecodeUtil

      private DecodeUtil()
  • Method Details

    • isOneByte

      private static boolean isOneByte(byte b)
      Returns whether this is a single-byte codepoint (i.e., ASCII) with the form '0XXXXXXX'.
    • isTwoBytes

      private static boolean isTwoBytes(byte b)
      Returns whether this is a two-byte codepoint with the form '10XXXXXX'.
    • isThreeBytes

      private static boolean isThreeBytes(byte b)
      Returns whether this is a three-byte codepoint with the form '110XXXXX'.
    • handleOneByte

      private static void handleOneByte(byte byte1, char[] resultArr, int resultPos)
    • handleTwoBytes

      private static void handleTwoBytes(byte byte1, byte byte2, char[] resultArr, int resultPos) throws InvalidProtocolBufferException
      Throws:
      InvalidProtocolBufferException
    • handleThreeBytes

      private static void handleThreeBytes(byte byte1, byte byte2, byte byte3, char[] resultArr, int resultPos) throws InvalidProtocolBufferException
      Throws:
      InvalidProtocolBufferException
    • handleFourBytes

      private static void handleFourBytes(byte byte1, byte byte2, byte byte3, byte byte4, char[] resultArr, int resultPos) throws InvalidProtocolBufferException
      Throws:
      InvalidProtocolBufferException
    • isNotTrailingByte

      private static boolean isNotTrailingByte(byte b)
      Returns whether the byte is not a valid continuation of the form '10XXXXXX'.
    • trailingByteValue

      private static int trailingByteValue(byte b)
      Returns the actual value of the trailing byte (removes the prefix '10') for composition.
    • highSurrogate

      private static char highSurrogate(int codePoint)
    • lowSurrogate

      private static char lowSurrogate(int codePoint)