mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2024-12-28 18:12:31 -06:00
175 lines
6.9 KiB
Java
175 lines
6.9 KiB
Java
package androidx.compose.runtime.snapshots;
|
|
|
|
import androidx.media3.exoplayer.upstream.CmcdHeadersFactory;
|
|
import kotlin.Metadata;
|
|
import kotlin.collections.ArraysKt;
|
|
|
|
/* compiled from: SnapshotDoubleIndexHeap.kt */
|
|
@Metadata(d1 = {"\u0000\"\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\b\n\u0000\n\u0002\u0010\u0015\n\u0002\b\n\n\u0002\u0010\u0002\n\u0002\b\u000e\b\u0000\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002J\u000e\u0010\r\u001a\u00020\u00042\u0006\u0010\u000e\u001a\u00020\u0004J\b\u0010\u000f\u001a\u00020\u0004H\u0002J\u0010\u0010\u0010\u001a\u00020\u00112\u0006\u0010\u0012\u001a\u00020\u0004H\u0002J\u0010\u0010\u0013\u001a\u00020\u00112\u0006\u0010\u0014\u001a\u00020\u0004H\u0002J\u0010\u0010\u0015\u001a\u00020\u00042\b\b\u0002\u0010\u0016\u001a\u00020\u0004J\u000e\u0010\u0017\u001a\u00020\u00112\u0006\u0010\u0014\u001a\u00020\u0004J\u0010\u0010\u0018\u001a\u00020\u00112\u0006\u0010\u0007\u001a\u00020\u0004H\u0002J\u0010\u0010\u0019\u001a\u00020\u00112\u0006\u0010\u0007\u001a\u00020\u0004H\u0002J\u0018\u0010\u001a\u001a\u00020\u00112\u0006\u0010\u001b\u001a\u00020\u00042\u0006\u0010\u001c\u001a\u00020\u0004H\u0002J\u0006\u0010\u001d\u001a\u00020\u0011J\u0016\u0010\u001e\u001a\u00020\u00112\u0006\u0010\u0014\u001a\u00020\u00042\u0006\u0010\u000e\u001a\u00020\u0004R\u000e\u0010\u0003\u001a\u00020\u0004X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u0005\u001a\u00020\u0006X\u0082\u000e¢\u0006\u0002\n\u0000R\u000e\u0010\u0007\u001a\u00020\u0006X\u0082\u000e¢\u0006\u0002\n\u0000R\u001e\u0010\t\u001a\u00020\u00042\u0006\u0010\b\u001a\u00020\u0004@BX\u0086\u000e¢\u0006\b\n\u0000\u001a\u0004\b\n\u0010\u000bR\u000e\u0010\f\u001a\u00020\u0006X\u0082\u000e¢\u0006\u0002\n\u0000¨\u0006\u001f"}, d2 = {"Landroidx/compose/runtime/snapshots/SnapshotDoubleIndexHeap;", "", "()V", "firstFreeHandle", "", "handles", "", "index", "<set-?>", "size", "getSize", "()I", "values", "add", "value", "allocateHandle", "ensure", "", "atLeast", "freeHandle", "handle", "lowestOrDefault", "default", "remove", "shiftDown", "shiftUp", "swap", CmcdHeadersFactory.OBJECT_TYPE_AUDIO_ONLY, "b", "validate", "validateHandle", "runtime_release"}, k = 1, mv = {1, 8, 0}, xi = 48)
|
|
/* loaded from: classes.dex */
|
|
public final class SnapshotDoubleIndexHeap {
|
|
private int firstFreeHandle;
|
|
private int[] handles;
|
|
private int size;
|
|
private int[] values = new int[16];
|
|
private int[] index = new int[16];
|
|
|
|
public final int getSize() {
|
|
return this.size;
|
|
}
|
|
|
|
public SnapshotDoubleIndexHeap() {
|
|
int[] iArr = new int[16];
|
|
int i = 0;
|
|
while (i < 16) {
|
|
int i2 = i + 1;
|
|
iArr[i] = i2;
|
|
i = i2;
|
|
}
|
|
this.handles = iArr;
|
|
}
|
|
|
|
public static /* synthetic */ int lowestOrDefault$default(SnapshotDoubleIndexHeap snapshotDoubleIndexHeap, int i, int i2, Object obj) {
|
|
if ((i2 & 1) != 0) {
|
|
i = 0;
|
|
}
|
|
return snapshotDoubleIndexHeap.lowestOrDefault(i);
|
|
}
|
|
|
|
public final int lowestOrDefault(int r2) {
|
|
return this.size > 0 ? this.values[0] : r2;
|
|
}
|
|
|
|
public final int add(int value) {
|
|
ensure(this.size + 1);
|
|
int i = this.size;
|
|
this.size = i + 1;
|
|
int allocateHandle = allocateHandle();
|
|
this.values[i] = value;
|
|
this.index[i] = allocateHandle;
|
|
this.handles[allocateHandle] = i;
|
|
shiftUp(i);
|
|
return allocateHandle;
|
|
}
|
|
|
|
public final void remove(int handle) {
|
|
int i = this.handles[handle];
|
|
swap(i, this.size - 1);
|
|
this.size--;
|
|
shiftUp(i);
|
|
shiftDown(i);
|
|
freeHandle(handle);
|
|
}
|
|
|
|
public final void validate() {
|
|
int i = this.size;
|
|
int i2 = 1;
|
|
while (i2 < i) {
|
|
int i3 = i2 + 1;
|
|
int[] iArr = this.values;
|
|
if (iArr[(i3 >> 1) - 1] > iArr[i2]) {
|
|
throw new IllegalStateException(("Index " + i2 + " is out of place").toString());
|
|
}
|
|
i2 = i3;
|
|
}
|
|
}
|
|
|
|
public final void validateHandle(int handle, int value) {
|
|
int i = this.handles[handle];
|
|
if (this.index[i] != handle) {
|
|
throw new IllegalStateException(("Index for handle " + handle + " is corrupted").toString());
|
|
}
|
|
if (this.values[i] != value) {
|
|
throw new IllegalStateException(("Value for handle " + handle + " was " + this.values[i] + " but was supposed to be " + value).toString());
|
|
}
|
|
}
|
|
|
|
private final void shiftUp(int index) {
|
|
int[] iArr = this.values;
|
|
int i = iArr[index];
|
|
while (index > 0) {
|
|
int i2 = ((index + 1) >> 1) - 1;
|
|
if (iArr[i2] <= i) {
|
|
return;
|
|
}
|
|
swap(i2, index);
|
|
index = i2;
|
|
}
|
|
}
|
|
|
|
private final void shiftDown(int index) {
|
|
int i;
|
|
int[] iArr = this.values;
|
|
int i2 = this.size >> 1;
|
|
while (index < i2) {
|
|
int i3 = (index + 1) << 1;
|
|
int i4 = i3 - 1;
|
|
if (i3 < this.size && (i = iArr[i3]) < iArr[i4]) {
|
|
if (i >= iArr[index]) {
|
|
return;
|
|
}
|
|
swap(i3, index);
|
|
index = i3;
|
|
} else {
|
|
if (iArr[i4] >= iArr[index]) {
|
|
return;
|
|
}
|
|
swap(i4, index);
|
|
index = i4;
|
|
}
|
|
}
|
|
}
|
|
|
|
private final void swap(int a, int b) {
|
|
int[] iArr = this.values;
|
|
int[] iArr2 = this.index;
|
|
int[] iArr3 = this.handles;
|
|
int i = iArr[a];
|
|
iArr[a] = iArr[b];
|
|
iArr[b] = i;
|
|
int i2 = iArr2[a];
|
|
iArr2[a] = iArr2[b];
|
|
iArr2[b] = i2;
|
|
iArr3[iArr2[a]] = a;
|
|
iArr3[iArr2[b]] = b;
|
|
}
|
|
|
|
private final void ensure(int atLeast) {
|
|
int[] iArr = this.values;
|
|
int length = iArr.length;
|
|
if (atLeast <= length) {
|
|
return;
|
|
}
|
|
int i = length * 2;
|
|
int[] iArr2 = new int[i];
|
|
int[] iArr3 = new int[i];
|
|
ArraysKt.copyInto$default(iArr, iArr2, 0, 0, 0, 14, (Object) null);
|
|
ArraysKt.copyInto$default(this.index, iArr3, 0, 0, 0, 14, (Object) null);
|
|
this.values = iArr2;
|
|
this.index = iArr3;
|
|
}
|
|
|
|
private final int allocateHandle() {
|
|
int length = this.handles.length;
|
|
if (this.firstFreeHandle >= length) {
|
|
int i = length * 2;
|
|
int[] iArr = new int[i];
|
|
int i2 = 0;
|
|
while (i2 < i) {
|
|
int i3 = i2 + 1;
|
|
iArr[i2] = i3;
|
|
i2 = i3;
|
|
}
|
|
ArraysKt.copyInto$default(this.handles, iArr, 0, 0, 0, 14, (Object) null);
|
|
this.handles = iArr;
|
|
}
|
|
int i4 = this.firstFreeHandle;
|
|
this.firstFreeHandle = this.handles[i4];
|
|
return i4;
|
|
}
|
|
|
|
private final void freeHandle(int handle) {
|
|
this.handles[handle] = this.firstFreeHandle;
|
|
this.firstFreeHandle = handle;
|
|
}
|
|
}
|