Rabbit-R1/switch port/java/sources/com/google/common/escape/CharEscaper.java
2024-05-21 17:08:36 -04:00

79 lines
2.6 KiB
Java

package com.google.common.escape;
import com.google.common.base.Preconditions;
import javax.annotation.CheckForNull;
@ElementTypesAreNonnullByDefault
/* loaded from: classes3.dex */
public abstract class CharEscaper extends Escaper {
private static final int DEST_PAD_MULTIPLIER = 2;
/* JADX INFO: Access modifiers changed from: protected */
@CheckForNull
public abstract char[] escape(char c);
@Override // com.google.common.escape.Escaper
public String escape(String str) {
Preconditions.checkNotNull(str);
int length = str.length();
for (int i = 0; i < length; i++) {
if (escape(str.charAt(i)) != null) {
return escapeSlow(str, i);
}
}
return str;
}
/* JADX INFO: Access modifiers changed from: protected */
public final String escapeSlow(String str, int i) {
int length = str.length();
char[] charBufferFromThreadLocal = Platform.charBufferFromThreadLocal();
int length2 = charBufferFromThreadLocal.length;
int i2 = 0;
int i3 = 0;
while (i < length) {
char[] escape = escape(str.charAt(i));
if (escape != null) {
int length3 = escape.length;
int i4 = i - i2;
int i5 = i3 + i4;
int i6 = i5 + length3;
if (length2 < i6) {
length2 = ((length - i) * 2) + i6;
charBufferFromThreadLocal = growBuffer(charBufferFromThreadLocal, i3, length2);
}
if (i4 > 0) {
str.getChars(i2, i, charBufferFromThreadLocal, i3);
i3 = i5;
}
if (length3 > 0) {
System.arraycopy(escape, 0, charBufferFromThreadLocal, i3, length3);
i3 += length3;
}
i2 = i + 1;
}
i++;
}
int i7 = length - i2;
if (i7 > 0) {
int i8 = i7 + i3;
if (length2 < i8) {
charBufferFromThreadLocal = growBuffer(charBufferFromThreadLocal, i3, i8);
}
str.getChars(i2, length, charBufferFromThreadLocal, i3);
i3 = i8;
}
return new String(charBufferFromThreadLocal, 0, i3);
}
private static char[] growBuffer(char[] cArr, int i, int i2) {
if (i2 < 0) {
throw new AssertionError("Cannot increase internal buffer any further");
}
char[] cArr2 = new char[i2];
if (i > 0) {
System.arraycopy(cArr, 0, cArr2, 0, i);
}
return cArr2;
}
}