Package com.google.protobuf
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(CharSequence in, byte[] out, int offset, int length) Encodes an input character sequence (in) to UTF-8 in the target array (out).(package private) voidencodeUtf8Direct(CharSequence in, ByteBuffer out) Encodes the input character sequence to a directByteBufferinstance.private static intpartialIsValidUtf8(byte[] bytes, int index, int limit) (package private) intpartialIsValidUtf8(int state, byte[] bytes, int index, int limit) Tells whether the given byte array slice is a well-formed, malformed, or incomplete UTF-8 byte sequence.(package private) intpartialIsValidUtf8Direct(int state, ByteBuffer buffer, int index, int limit) Performs validation for directByteBufferinstances.private static intpartialIsValidUtf8NonAscii(byte[] bytes, int index, int limit) Methods inherited from class com.google.protobuf.Utf8.Processor
decodeUtf8, decodeUtf8Default, encodeUtf8, encodeUtf8Default, isValidUtf8, isValidUtf8, partialIsValidUtf8, partialIsValidUtf8Default
-
Constructor Details
-
SafeProcessor
SafeProcessor()
-
-
Method Details
-
partialIsValidUtf8
int partialIsValidUtf8(int state, byte[] bytes, int index, int limit) Description copied from class:Utf8.ProcessorTells whether the given byte array slice is a well-formed, malformed, or incomplete UTF-8 byte sequence. The range of bytes to be checked extends from indexindex, inclusive, tolimit, exclusive.- Specified by:
partialIsValidUtf8in classUtf8.Processor- Parameters:
state- eitherUtf8.COMPLETE(if this is the initial decoding operation) or the value returned from a call to a partial decoding method for the previous bytes- Returns:
Utf8.MALFORMEDif the partial byte sequence is definitely not well-formed,Utf8.COMPLETEif it is well-formed (no additional input needed), or if the byte sequence is "incomplete", i.e. apparently terminated in the middle of a character, an opaque integer "state" value containing enough information to decode the character when passed to a subsequent invocation of a partial decoding method.
-
partialIsValidUtf8Direct
Description copied from class:Utf8.ProcessorPerforms validation for directByteBufferinstances.- Specified by:
partialIsValidUtf8Directin 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 similar to
but is more efficient in both time and space. One key difference is that this method requires paired surrogates, and therefore does not support chunking. Whilebyte[] a = string.getBytes(UTF_8); System.arraycopy(a, 0, bytes, offset, a.length); return offset + a.length;String.getBytes(UTF_8)replaces unpaired surrogates with the default replacement character, this method throwsUtf8.UnpairedSurrogateException.To ensure sufficient space in the output buffer, either call
Utf8.encodedLength(java.lang.CharSequence)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)
-
encodeUtf8Direct
Description copied from class:Utf8.ProcessorEncodes the input character sequence to a directByteBufferinstance.- Specified by:
encodeUtf8Directin classUtf8.Processor
-
partialIsValidUtf8
private static int partialIsValidUtf8(byte[] bytes, int index, int limit) -
partialIsValidUtf8NonAscii
private static int partialIsValidUtf8NonAscii(byte[] bytes, int index, int limit)
-