Files
rr3-apk/decompiled/sources/com/google/protobuf/SmallSortedMap.java
Daniel Elliott f9d20bb3fc Add decompiled APK source code (JADX)
- 28,932 files
- Full Java source code
- Smali files
- Resources

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-18 14:52:23 -08:00

559 lines
19 KiB
Java

package com.google.protobuf;
import com.google.protobuf.FieldSet;
import com.google.protobuf.SmallSortedMap.DescendingEntrySet;
import com.google.protobuf.SmallSortedMap.Entry;
import com.google.protobuf.SmallSortedMap.EntrySet;
import com.ironsource.v8;
import java.util.AbstractMap;
import java.util.AbstractSet;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;
/* loaded from: classes3.dex */
public class SmallSortedMap extends AbstractMap {
private List<Entry> entryList;
private boolean isImmutable;
private volatile DescendingEntrySet lazyDescendingEntrySet;
private volatile EntrySet lazyEntrySet;
private final int maxArraySize;
private Map<Comparable<Object>, Object> overflowEntries;
private Map<Comparable<Object>, Object> overflowEntriesDescending;
public boolean isImmutable() {
return this.isImmutable;
}
public static <FieldDescriptorType extends FieldSet.FieldDescriptorLite<FieldDescriptorType>> SmallSortedMap newFieldMap(int i) {
return new SmallSortedMap(i) { // from class: com.google.protobuf.SmallSortedMap.1
@Override // com.google.protobuf.SmallSortedMap, java.util.AbstractMap, java.util.Map
public /* bridge */ /* synthetic */ Object put(Object obj, Object obj2) {
return super.put((Comparable<Object>) obj, obj2);
}
@Override // com.google.protobuf.SmallSortedMap
public void makeImmutable() {
if (!isImmutable()) {
for (int i2 = 0; i2 < getNumArrayEntries(); i2++) {
Map.Entry<Comparable<Object>, Object> arrayEntryAt = getArrayEntryAt(i2);
if (((FieldSet.FieldDescriptorLite) arrayEntryAt.getKey()).isRepeated()) {
arrayEntryAt.setValue(Collections.unmodifiableList((List) arrayEntryAt.getValue()));
}
}
for (Map.Entry<Comparable<Object>, Object> entry : getOverflowEntries()) {
if (((FieldSet.FieldDescriptorLite) entry.getKey()).isRepeated()) {
entry.setValue(Collections.unmodifiableList((List) entry.getValue()));
}
}
}
super.makeImmutable();
}
};
}
public static <K extends Comparable<K>, V> SmallSortedMap newInstanceForTest(int i) {
return new SmallSortedMap(i);
}
private SmallSortedMap(int i) {
this.maxArraySize = i;
this.entryList = Collections.emptyList();
this.overflowEntries = Collections.emptyMap();
this.overflowEntriesDescending = Collections.emptyMap();
}
public void makeImmutable() {
Map<Comparable<Object>, Object> unmodifiableMap;
Map<Comparable<Object>, Object> unmodifiableMap2;
if (this.isImmutable) {
return;
}
if (this.overflowEntries.isEmpty()) {
unmodifiableMap = Collections.emptyMap();
} else {
unmodifiableMap = Collections.unmodifiableMap(this.overflowEntries);
}
this.overflowEntries = unmodifiableMap;
if (this.overflowEntriesDescending.isEmpty()) {
unmodifiableMap2 = Collections.emptyMap();
} else {
unmodifiableMap2 = Collections.unmodifiableMap(this.overflowEntriesDescending);
}
this.overflowEntriesDescending = unmodifiableMap2;
this.isImmutable = true;
}
public int getNumArrayEntries() {
return this.entryList.size();
}
public Map.Entry<Comparable<Object>, Object> getArrayEntryAt(int i) {
return this.entryList.get(i);
}
public int getNumOverflowEntries() {
return this.overflowEntries.size();
}
public Iterable<Map.Entry<Comparable<Object>, Object>> getOverflowEntries() {
if (this.overflowEntries.isEmpty()) {
return EmptySet.iterable();
}
return this.overflowEntries.entrySet();
}
public Iterable<Map.Entry<Comparable<Object>, Object>> getOverflowEntriesDescending() {
if (this.overflowEntriesDescending.isEmpty()) {
return EmptySet.iterable();
}
return this.overflowEntriesDescending.entrySet();
}
@Override // java.util.AbstractMap, java.util.Map
public int size() {
return this.entryList.size() + this.overflowEntries.size();
}
@Override // java.util.AbstractMap, java.util.Map
public boolean containsKey(Object obj) {
Comparable<Object> comparable = (Comparable) obj;
return binarySearchInArray(comparable) >= 0 || this.overflowEntries.containsKey(comparable);
}
@Override // java.util.AbstractMap, java.util.Map
public Object get(Object obj) {
Comparable<Object> comparable = (Comparable) obj;
int binarySearchInArray = binarySearchInArray(comparable);
if (binarySearchInArray >= 0) {
return this.entryList.get(binarySearchInArray).getValue();
}
return this.overflowEntries.get(comparable);
}
@Override // java.util.AbstractMap, java.util.Map
public Object put(Comparable<Object> comparable, Object obj) {
checkMutable();
int binarySearchInArray = binarySearchInArray(comparable);
if (binarySearchInArray >= 0) {
return this.entryList.get(binarySearchInArray).setValue(obj);
}
ensureEntryArrayMutable();
int i = -(binarySearchInArray + 1);
if (i >= this.maxArraySize) {
return getOverflowEntriesMutable().put(comparable, obj);
}
int size = this.entryList.size();
int i2 = this.maxArraySize;
if (size == i2) {
Entry remove = this.entryList.remove(i2 - 1);
getOverflowEntriesMutable().put(remove.getKey(), remove.getValue());
}
this.entryList.add(i, new Entry(comparable, obj));
return null;
}
@Override // java.util.AbstractMap, java.util.Map
public void clear() {
checkMutable();
if (!this.entryList.isEmpty()) {
this.entryList.clear();
}
if (this.overflowEntries.isEmpty()) {
return;
}
this.overflowEntries.clear();
}
@Override // java.util.AbstractMap, java.util.Map
public Object remove(Object obj) {
checkMutable();
Comparable<Object> comparable = (Comparable) obj;
int binarySearchInArray = binarySearchInArray(comparable);
if (binarySearchInArray >= 0) {
return removeArrayEntryAt(binarySearchInArray);
}
if (this.overflowEntries.isEmpty()) {
return null;
}
return this.overflowEntries.remove(comparable);
}
/* JADX INFO: Access modifiers changed from: private */
public Object removeArrayEntryAt(int i) {
checkMutable();
Object value = this.entryList.remove(i).getValue();
if (!this.overflowEntries.isEmpty()) {
Iterator<Map.Entry<Comparable<Object>, Object>> it = getOverflowEntriesMutable().entrySet().iterator();
this.entryList.add(new Entry(this, it.next()));
it.remove();
}
return value;
}
private int binarySearchInArray(Comparable<Object> comparable) {
int i;
int size = this.entryList.size();
int i2 = size - 1;
if (i2 >= 0) {
int compareTo = comparable.compareTo(this.entryList.get(i2).getKey());
if (compareTo > 0) {
i = size + 1;
return -i;
}
if (compareTo == 0) {
return i2;
}
}
int i3 = 0;
while (i3 <= i2) {
int i4 = (i3 + i2) / 2;
int compareTo2 = comparable.compareTo(this.entryList.get(i4).getKey());
if (compareTo2 < 0) {
i2 = i4 - 1;
} else {
if (compareTo2 <= 0) {
return i4;
}
i3 = i4 + 1;
}
}
i = i3 + 1;
return -i;
}
@Override // java.util.AbstractMap, java.util.Map
public Set<Map.Entry<Comparable<Object>, Object>> entrySet() {
if (this.lazyEntrySet == null) {
this.lazyEntrySet = new EntrySet();
}
return this.lazyEntrySet;
}
public Set<Map.Entry<Comparable<Object>, Object>> descendingEntrySet() {
if (this.lazyDescendingEntrySet == null) {
this.lazyDescendingEntrySet = new DescendingEntrySet();
}
return this.lazyDescendingEntrySet;
}
/* JADX INFO: Access modifiers changed from: private */
public void checkMutable() {
if (this.isImmutable) {
throw new UnsupportedOperationException();
}
}
private SortedMap<Comparable<Object>, Object> getOverflowEntriesMutable() {
checkMutable();
if (this.overflowEntries.isEmpty() && !(this.overflowEntries instanceof TreeMap)) {
TreeMap treeMap = new TreeMap();
this.overflowEntries = treeMap;
this.overflowEntriesDescending = treeMap.descendingMap();
}
return (SortedMap) this.overflowEntries;
}
private void ensureEntryArrayMutable() {
checkMutable();
if (!this.entryList.isEmpty() || (this.entryList instanceof ArrayList)) {
return;
}
this.entryList = new ArrayList(this.maxArraySize);
}
public class Entry implements Map.Entry, Comparable {
private final Comparable<Object> key;
private Object value;
@Override // java.util.Map.Entry
public Comparable<Object> getKey() {
return this.key;
}
@Override // java.util.Map.Entry
public Object getValue() {
return this.value;
}
public Entry(SmallSortedMap smallSortedMap, Map.Entry<Comparable<Object>, Object> entry) {
this(entry.getKey(), entry.getValue());
}
public Entry(Comparable<Object> comparable, Object obj) {
this.key = comparable;
this.value = obj;
}
@Override // java.lang.Comparable
public int compareTo(com.google.protobuf.SmallSortedMap.Entry entry) {
return getKey().compareTo(entry.getKey());
}
@Override // java.util.Map.Entry
public Object setValue(Object obj) {
SmallSortedMap.this.checkMutable();
Object obj2 = this.value;
this.value = obj;
return obj2;
}
@Override // java.util.Map.Entry
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof Map.Entry)) {
return false;
}
Map.Entry entry = (Map.Entry) obj;
return equals(this.key, entry.getKey()) && equals(this.value, entry.getValue());
}
@Override // java.util.Map.Entry
public int hashCode() {
Comparable<Object> comparable = this.key;
int hashCode = comparable == null ? 0 : comparable.hashCode();
Object obj = this.value;
return hashCode ^ (obj != null ? obj.hashCode() : 0);
}
public String toString() {
return this.key + v8.i.b + this.value;
}
private boolean equals(Object obj, Object obj2) {
if (obj == null) {
return obj2 == null;
}
return obj.equals(obj2);
}
}
public class EntrySet extends AbstractSet {
private EntrySet() {
}
@Override // java.util.AbstractCollection, java.util.Collection, java.lang.Iterable, java.util.Set
public Iterator<Map.Entry<Comparable<Object>, Object>> iterator() {
return new EntryIterator();
}
@Override // java.util.AbstractCollection, java.util.Collection, java.util.Set
public int size() {
return SmallSortedMap.this.size();
}
@Override // java.util.AbstractCollection, java.util.Collection, java.util.Set
public boolean contains(Object obj) {
Map.Entry entry = (Map.Entry) obj;
Object obj2 = SmallSortedMap.this.get(entry.getKey());
Object value = entry.getValue();
return obj2 == value || (obj2 != null && obj2.equals(value));
}
@Override // java.util.AbstractCollection, java.util.Collection, java.util.Set
public boolean add(Map.Entry<Comparable<Object>, Object> entry) {
if (contains(entry)) {
return false;
}
SmallSortedMap.this.put(entry.getKey(), entry.getValue());
return true;
}
@Override // java.util.AbstractCollection, java.util.Collection, java.util.Set
public boolean remove(Object obj) {
Map.Entry entry = (Map.Entry) obj;
if (!contains(entry)) {
return false;
}
SmallSortedMap.this.remove(entry.getKey());
return true;
}
@Override // java.util.AbstractCollection, java.util.Collection, java.util.Set
public void clear() {
SmallSortedMap.this.clear();
}
}
public class DescendingEntrySet extends EntrySet {
private DescendingEntrySet() {
super();
}
@Override // com.google.protobuf.SmallSortedMap.EntrySet, java.util.AbstractCollection, java.util.Collection, java.lang.Iterable, java.util.Set
public Iterator<Map.Entry<Comparable<Object>, Object>> iterator() {
return new DescendingEntryIterator();
}
}
public class EntryIterator implements Iterator {
private Iterator<Map.Entry<Comparable<Object>, Object>> lazyOverflowIterator;
private boolean nextCalledBeforeRemove;
private int pos;
private EntryIterator() {
this.pos = -1;
}
@Override // java.util.Iterator
public boolean hasNext() {
if (this.pos + 1 >= SmallSortedMap.this.entryList.size()) {
return !SmallSortedMap.this.overflowEntries.isEmpty() && getOverflowIterator().hasNext();
}
return true;
}
@Override // java.util.Iterator
public Map.Entry<Comparable<Object>, Object> next() {
this.nextCalledBeforeRemove = true;
int i = this.pos + 1;
this.pos = i;
if (i < SmallSortedMap.this.entryList.size()) {
return (Map.Entry) SmallSortedMap.this.entryList.get(this.pos);
}
return getOverflowIterator().next();
}
@Override // java.util.Iterator
public void remove() {
if (this.nextCalledBeforeRemove) {
this.nextCalledBeforeRemove = false;
SmallSortedMap.this.checkMutable();
if (this.pos < SmallSortedMap.this.entryList.size()) {
SmallSortedMap smallSortedMap = SmallSortedMap.this;
int i = this.pos;
this.pos = i - 1;
smallSortedMap.removeArrayEntryAt(i);
return;
}
getOverflowIterator().remove();
return;
}
throw new IllegalStateException("remove() was called before next()");
}
private Iterator<Map.Entry<Comparable<Object>, Object>> getOverflowIterator() {
if (this.lazyOverflowIterator == null) {
this.lazyOverflowIterator = SmallSortedMap.this.overflowEntries.entrySet().iterator();
}
return this.lazyOverflowIterator;
}
}
public class DescendingEntryIterator implements Iterator {
private Iterator<Map.Entry<Comparable<Object>, Object>> lazyOverflowIterator;
private int pos;
private DescendingEntryIterator() {
this.pos = SmallSortedMap.this.entryList.size();
}
@Override // java.util.Iterator
public boolean hasNext() {
int i = this.pos;
return (i > 0 && i <= SmallSortedMap.this.entryList.size()) || getOverflowIterator().hasNext();
}
@Override // java.util.Iterator
public Map.Entry<Comparable<Object>, Object> next() {
if (!getOverflowIterator().hasNext()) {
List list = SmallSortedMap.this.entryList;
int i = this.pos - 1;
this.pos = i;
return (Map.Entry) list.get(i);
}
return getOverflowIterator().next();
}
@Override // java.util.Iterator
public void remove() {
throw new UnsupportedOperationException();
}
private Iterator<Map.Entry<Comparable<Object>, Object>> getOverflowIterator() {
if (this.lazyOverflowIterator == null) {
this.lazyOverflowIterator = SmallSortedMap.this.overflowEntriesDescending.entrySet().iterator();
}
return this.lazyOverflowIterator;
}
}
public static class EmptySet {
private static final Iterator<Object> ITERATOR = new Iterator() { // from class: com.google.protobuf.SmallSortedMap.EmptySet.1
@Override // java.util.Iterator
public boolean hasNext() {
return false;
}
@Override // java.util.Iterator
public Object next() {
throw new NoSuchElementException();
}
@Override // java.util.Iterator
public void remove() {
throw new UnsupportedOperationException();
}
};
private static final Iterable<Object> ITERABLE = new Iterable() { // from class: com.google.protobuf.SmallSortedMap.EmptySet.2
@Override // java.lang.Iterable
public Iterator<Object> iterator() {
return EmptySet.ITERATOR;
}
};
public static <T> Iterable<T> iterable() {
return (Iterable<T>) ITERABLE;
}
private EmptySet() {
}
}
@Override // java.util.AbstractMap, java.util.Map
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof SmallSortedMap)) {
return super.equals(obj);
}
SmallSortedMap smallSortedMap = (SmallSortedMap) obj;
int size = size();
if (size != smallSortedMap.size()) {
return false;
}
int numArrayEntries = getNumArrayEntries();
if (numArrayEntries != smallSortedMap.getNumArrayEntries()) {
return entrySet().equals(smallSortedMap.entrySet());
}
for (int i = 0; i < numArrayEntries; i++) {
if (!getArrayEntryAt(i).equals(smallSortedMap.getArrayEntryAt(i))) {
return false;
}
}
if (numArrayEntries != size) {
return this.overflowEntries.equals(smallSortedMap.overflowEntries);
}
return true;
}
@Override // java.util.AbstractMap, java.util.Map
public int hashCode() {
int numArrayEntries = getNumArrayEntries();
int i = 0;
for (int i2 = 0; i2 < numArrayEntries; i2++) {
i += this.entryList.get(i2).hashCode();
}
return getNumOverflowEntries() > 0 ? i + this.overflowEntries.hashCode() : i;
}
}