Class Utf8.SafeProcessor

  • Enclosing class:
    Utf8

    static final class Utf8.SafeProcessor
    extends Utf8.Processor
    Utf8.Processor implementation that does not use any sun.misc.Unsafe methods.
    • Constructor Summary

      Constructors 
      Constructor Description
      SafeProcessor()  
    • Constructor Detail

      • SafeProcessor

        SafeProcessor()
    • Method Detail

      • isValidUtf8

        public boolean isValidUtf8​(byte[] bytes,
                                   int index,
                                   int limit)
        Description copied from class: Utf8.Processor
        Returns true if the given byte array slice is a well-formed UTF-8 byte sequence. The range of bytes to be checked extends from index index, inclusive, to limit, exclusive.
        Specified by:
        isValidUtf8 in class Utf8.Processor
      • encodeUtf8

        int encodeUtf8​(java.lang.String in,
                       byte[] out,
                       int offset,
                       int length)
        Description copied from class: Utf8.Processor
        Encodes an input character sequence (in) to UTF-8 in the target array (out). For a string, this method is functionally identical to
        
         byte[] a = string.getBytes(UTF_8);
         System.arraycopy(a, 0, bytes, offset, a.length);
         return offset + a.length;
         
        but may be implemented differently for efficiency purposes.

        Matching String.getBytes(UTF_8) this replaces unpaired surrogates with a replacement character.

        To ensure sufficient space in the output buffer, either call Utf8.encodedLength(java.lang.String) to compute the exact amount needed, or leave room for Utf8.MAX_BYTES_PER_CHAR * sequence.length(), which is the largest possible number of bytes that any input can be encoded to.

        Specified by:
        encodeUtf8 in class Utf8.Processor
        Parameters:
        in - the input character sequence to be encoded
        out - the target array
        offset - the starting offset in bytes to start writing at
        length - the length of the bytes, starting from offset
        Returns:
        the new offset, equivalent to offset + Utf8.encodedLength(sequence)
      • encodeUtf8Internal

        protected void encodeUtf8Internal​(java.lang.String in,
                                          java.nio.ByteBuffer out)
        Description copied from class: Utf8.Processor
        Encodes the input character sequence to a direct ByteBuffer instance.
        Specified by:
        encodeUtf8Internal in class Utf8.Processor
      • isValidUtf8NonAscii

        private static boolean isValidUtf8NonAscii​(byte[] bytes,
                                                   int index,
                                                   int limit)