Class Utf8.SafeProcessor
java.lang.Object
com.google.protobuf.Utf8.Processor
com.google.protobuf.Utf8.SafeProcessor
- Enclosing class:
Utf8
Utf8.Processor implementation that does not use any sun.misc.Unsafe methods.-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription(package private) StringdecodeUtf8(byte[] bytes, int index, int size) Decodes the given byte array slice into aString.(package private) StringdecodeUtf8Direct(ByteBuffer buffer, int index, int size) Decodes directByteBufferinstances intoString.(package private) intencodeUtf8(String in, byte[] out, int offset, int length) Encodes an input character sequence (in) to UTF-8 in the target array (out).protected voidencodeUtf8Internal(String in, ByteBuffer out) Encodes the input character sequence to a directByteBufferinstance.booleanisValidUtf8(byte[] bytes, int index, int limit) Returnstrueif the given byte array slice is a well-formed UTF-8 byte sequence.private static booleanisValidUtf8NonAscii(byte[] bytes, int index, int limit) Methods inherited from class Utf8.Processor
decodeUtf8, decodeUtf8Default, encodeUtf8, encodeUtf8Naive, encodeUtf8Naive, isValidUtf8BufferDefault, isValidUtf8BufferDirect
-
Constructor Details
-
SafeProcessor
SafeProcessor()
-
-
Method Details
-
isValidUtf8
public boolean isValidUtf8(byte[] bytes, int index, int limit) Description copied from class:Utf8.ProcessorReturnstrueif the given byte array slice is a well-formed UTF-8 byte sequence. The range of bytes to be checked extends from indexindex, inclusive, tolimit, exclusive.- Specified by:
isValidUtf8in classUtf8.Processor
-
decodeUtf8
Description copied from class:Utf8.ProcessorDecodes the given byte array slice into aString.- Specified by:
decodeUtf8in classUtf8.Processor- Throws:
InvalidProtocolBufferException- if the byte array slice is not valid UTF-8
-
decodeUtf8Direct
String decodeUtf8Direct(ByteBuffer buffer, int index, int size) throws InvalidProtocolBufferException Description copied from class:Utf8.ProcessorDecodes directByteBufferinstances intoString.- Specified by:
decodeUtf8Directin classUtf8.Processor- Throws:
InvalidProtocolBufferException
-
encodeUtf8
Description copied from class:Utf8.ProcessorEncodes an input character sequence (in) to UTF-8 in the target array (out). For a string, this method is functionally identical to
but may be implemented differently for efficiency purposes.byte[] a = string.getBytes(UTF_8); System.arraycopy(a, 0, bytes, offset, a.length); return offset + a.length;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(String)to compute the exact amount needed, or leave room forUtf8.MAX_BYTES_PER_CHAR * sequence.length(), which is the largest possible number of bytes that any input can be encoded to.- Specified by:
encodeUtf8in classUtf8.Processor- Parameters:
in- the input character sequence to be encodedout- the target arrayoffset- the starting offset inbytesto start writing atlength- the length of thebytes, starting fromoffset- Returns:
- the new offset, equivalent to
offset + Utf8.encodedLength(sequence)
-
encodeUtf8Internal
Description copied from class:Utf8.ProcessorEncodes the input character sequence to a directByteBufferinstance.- Specified by:
encodeUtf8Internalin classUtf8.Processor
-
isValidUtf8NonAscii
private static boolean isValidUtf8NonAscii(byte[] bytes, int index, int limit)
-