mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2024-12-30 11:02:31 -06:00
525 lines
28 KiB
Java
525 lines
28 KiB
Java
|
package androidx.compose.runtime;
|
||
|
|
||
|
import androidx.compose.runtime.tooling.CompositionData;
|
||
|
import androidx.compose.runtime.tooling.CompositionGroup;
|
||
|
import androidx.exifinterface.media.ExifInterface;
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.Iterator;
|
||
|
import java.util.List;
|
||
|
import kotlin.KotlinNothingValueException;
|
||
|
import kotlin.Metadata;
|
||
|
import kotlin.Unit;
|
||
|
import kotlin.collections.ArraysKt;
|
||
|
import kotlin.jvm.functions.Function1;
|
||
|
import kotlin.jvm.internal.InlineMarker;
|
||
|
import kotlin.jvm.internal.Intrinsics;
|
||
|
import kotlin.jvm.internal.Ref;
|
||
|
import kotlin.jvm.internal.markers.KMappedMarker;
|
||
|
|
||
|
/* compiled from: SlotTable.kt */
|
||
|
@Metadata(d1 = {"\u0000\u0092\u0001\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0010\u001c\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\b\n\u0002\u0010\u0015\n\u0002\b\u0003\n\u0002\u0010\b\n\u0002\b\u0004\n\u0002\u0010\u000b\n\u0002\b\u0002\n\u0002\u0010\u0011\n\u0002\u0010\u0000\n\u0002\b\u0010\n\u0002\u0010\u000e\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010 \n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\t\n\u0002\u0010(\n\u0002\b\t\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\r\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\b\u0000\u0018\u00002\u00020\u00012\b\u0012\u0004\u0012\u00020\u00030\u0002B\u0005¢\u0006\u0002\u0010\u0004J\u000e\u0010+\u001a\u00020\u00072\u0006\u0010,\u001a\u00020\u0015J\u000e\u0010-\u001a\u00020\u00152\u0006\u0010+\u001a\u00020\u0007J\u0006\u0010.\u001a\u00020/J\u0015\u00100\u001a\u0002012\u0006\u00102\u001a\u000203H\u0000¢\u0006\u0002\b4JW\u00100\u001a\u0002012\u0006\u0010)\u001a\u0002052\u0006\u0010\u0012\u001a\u00020\u00112\u0006\u0010\u0016\u001a\u00020\u00152\u000e\u0010\u001f\u001a\n\u0012\u0006\u0012\u0004\u0018\u00010\u001e0\u001d2\u0006\u0010#\u001a\u00020\u00152\u0016\u0010\u0005\u001a\u0012\u0012\u0004\u0012\u00020\u00070\u0006j\b\u0012\u0004\u0012\u00020\u0007`\bH\u0000¢\u0006\u0004\b4\u00106J\u0006\u00107\u001a\u00020\u001aJ\u000e\u00108\u001a\b\u0012\u0004\u0012\u00020\u001509H\u0002J\u0012\u0010:\u001a\u0004\u0018\u00010\u00032\u0006\u0010;\u001a\u00020\u001eH\u0016J\u0012\u0010<\u001a\u0004\u0018\u00010=2\u0006\u0010>\u001a\u00020\u0015H\u0002J\u0016\u0010?\u001a\u00020\u001a2\u0006\u0010@\u001a\u00020\u00152\u0006\u0010+\u001a\u00020\u0007J\u000e\u0010A\u001a\b\u0012\u0004\u0012\u00020\u001509H\u0002J\u0010\u0010B\u001a\u00020\u001a2\u0006\u0010>\u001a\u00020\u0015H\u0002J\u001d\u0010C\u001a\n\u0012\u0004\u0012\u00020=\u0018\u0001092\u0006\u0010D\u001a\u00020\u0015H\u0000¢\u0006\u0002\bEJ\u000f\u0010F\u001a\b\u0012\u0004\u0012\u00020\u00030GH\u0096\u0002J\u000e\u0010H\u001a\b\u0012\u0004\u0012\u00020\u001509H\u0002J\u000e\u0010I\u001a\b\u0012\u0004\u0012\u00020\u001509H\u0002J\u0006\u0010J\u001a\u000203J\u0006\u0010K\u001a\u000205J\u000e\u0010L\u001a\u00020\u001a2\u0006\u0010+\u001a\u00020\u0007J\u000e\u0010M\u001a\b\u0012\u0004\u0012\u00020\u001509H\u0002J:\u0010N\u001a\u0002HO\"\u0004\b\u0000\u0010O2!\u0010P\u001a\u001d\u0012\u0013\u0012\u001103¢\u0006\f\bR\u0012\b\bS\u0012\u0004\b\b(2\u0012\u0004\u0012\u0002HO0QH\u0086\bø\u0001\u0000¢\u0006\u0002\u0010TJO\u0010U\u001a\u0002012\u0006\u0010\u0012\u001a\u00020\u00112\u0006\u0010\u0016\u001a\u00020\u00152\u000e\u0010\u001f\u001a\n\u0012\u0006\u0012\u0004\u0018\u00010\u001e0\u001d2\u0006\u0010#\u001a\u00020\u00152\u0016\u0010\u0005\u001a\u0012\u0012\u0004\u0012\u00020\u00070\u0006j\b\u0012\u0004\u0012\u00020\u0007`\bH\u0000¢\u0006\u0004\bV\u0010WJ\u001f\u0010X\u001a\u0004\u0018\u00010\u001e2\u0006\u0010>\u001a\u00020\u00152\u0006\u0010Y\u001a\u00020\u0015H\u0000¢\u0006\u0002\bZJ\u001d\u0010[\u001a\n\u0012\u0006\u0012\u0004\u0018\u00010\u001e092\u0006\u0010>\u001a\u00020\u0015H\u0000¢\u0006\u0002\b\\J\u0006\u0010]\u001a\u000201J:\u0010^\u001a\u0002HO\"\u0004\b\u0000\u0010O2!\u0010P\u001a\u001d\u0012\u0013\u0012\u001105¢\u0006\f\bR\u0012\b\bS\u0012\u0004\b\b()\u0012\u0004\u0012\u0002HO0QH\u0086\bø\u0001\u0000¢\u0006\u0002\u0010TJ \u0010_\u001a\u00020\u0015*\u00060`j\u0002`a2\u0006\u0010,\u001a\u00020\u00152\u0006\u0010b\u001a\u00020\u0015H\u0002R*\u0010\u0005\u001a\u0012\u0012\u0004\u0012\u00020\u00070\u0006j\b\u0012\u0004\u0012\u00020\u0007`\bX\u0080\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\t\u0010\n\"\u0004\b\u000b\u0010\fR\u001a\u0010\r\u001a\b\u0012\u0004\u0012\u00020\u00030\u00028VX\u0096\u0004¢\u0006\u0006\u001a\u0004\b\u000e\u0010\u000fR\u001e\u0010\u0012\u001a\u00020\u00112\u0006\u0010\u0010\u001a\u00020\u0011@BX\u0086\u000e¢\u0006\b\n\u0000\u001a\u0004\b\u0013\u0010\u0014R\u001e\u0010\u0016\u001a\u00020\u00152\u0006\u0010\u0010\u001a\u00020\u0015@BX\u0086\u00
|
||
|
/* loaded from: classes.dex */
|
||
|
public final class SlotTable implements CompositionData, Iterable<CompositionGroup>, KMappedMarker {
|
||
|
private int groupsSize;
|
||
|
private int readers;
|
||
|
private int slotsSize;
|
||
|
private int version;
|
||
|
private boolean writer;
|
||
|
private int[] groups = new int[0];
|
||
|
private Object[] slots = new Object[0];
|
||
|
private ArrayList<Anchor> anchors = new ArrayList<>();
|
||
|
|
||
|
public final ArrayList<Anchor> getAnchors$runtime_release() {
|
||
|
return this.anchors;
|
||
|
}
|
||
|
|
||
|
public final int[] getGroups() {
|
||
|
return this.groups;
|
||
|
}
|
||
|
|
||
|
public final int getGroupsSize() {
|
||
|
return this.groupsSize;
|
||
|
}
|
||
|
|
||
|
public final Object[] getSlots() {
|
||
|
return this.slots;
|
||
|
}
|
||
|
|
||
|
public final int getSlotsSize() {
|
||
|
return this.slotsSize;
|
||
|
}
|
||
|
|
||
|
/* renamed from: getVersion$runtime_release, reason: from getter */
|
||
|
public final int getVersion() {
|
||
|
return this.version;
|
||
|
}
|
||
|
|
||
|
/* renamed from: getWriter$runtime_release, reason: from getter */
|
||
|
public final boolean getWriter() {
|
||
|
return this.writer;
|
||
|
}
|
||
|
|
||
|
@Override // androidx.compose.runtime.tooling.CompositionData
|
||
|
public boolean isEmpty() {
|
||
|
return this.groupsSize == 0;
|
||
|
}
|
||
|
|
||
|
public final void setAnchors$runtime_release(ArrayList<Anchor> arrayList) {
|
||
|
Intrinsics.checkNotNullParameter(arrayList, "<set-?>");
|
||
|
this.anchors = arrayList;
|
||
|
}
|
||
|
|
||
|
public final void setTo$runtime_release(int[] groups, int groupsSize, Object[] slots, int slotsSize, ArrayList<Anchor> anchors) {
|
||
|
Intrinsics.checkNotNullParameter(groups, "groups");
|
||
|
Intrinsics.checkNotNullParameter(slots, "slots");
|
||
|
Intrinsics.checkNotNullParameter(anchors, "anchors");
|
||
|
this.groups = groups;
|
||
|
this.groupsSize = groupsSize;
|
||
|
this.slots = slots;
|
||
|
this.slotsSize = slotsSize;
|
||
|
this.anchors = anchors;
|
||
|
}
|
||
|
|
||
|
public final void setVersion$runtime_release(int i) {
|
||
|
this.version = i;
|
||
|
}
|
||
|
|
||
|
public final <T> T read(Function1<? super SlotReader, ? extends T> block) {
|
||
|
Intrinsics.checkNotNullParameter(block, "block");
|
||
|
SlotReader openReader = openReader();
|
||
|
try {
|
||
|
return block.invoke(openReader);
|
||
|
} finally {
|
||
|
InlineMarker.finallyStart(1);
|
||
|
openReader.close();
|
||
|
InlineMarker.finallyEnd(1);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public final <T> T write(Function1<? super SlotWriter, ? extends T> block) {
|
||
|
Intrinsics.checkNotNullParameter(block, "block");
|
||
|
SlotWriter openWriter = openWriter();
|
||
|
try {
|
||
|
return block.invoke(openWriter);
|
||
|
} finally {
|
||
|
InlineMarker.finallyStart(1);
|
||
|
openWriter.close();
|
||
|
InlineMarker.finallyEnd(1);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public final SlotReader openReader() {
|
||
|
if (this.writer) {
|
||
|
throw new IllegalStateException("Cannot read while a writer is pending".toString());
|
||
|
}
|
||
|
this.readers++;
|
||
|
return new SlotReader(this);
|
||
|
}
|
||
|
|
||
|
public final SlotWriter openWriter() {
|
||
|
if (!(!this.writer)) {
|
||
|
ComposerKt.composeRuntimeError("Cannot start a writer when another writer is pending".toString());
|
||
|
throw new KotlinNothingValueException();
|
||
|
}
|
||
|
if (this.readers <= 0) {
|
||
|
this.writer = true;
|
||
|
this.version++;
|
||
|
return new SlotWriter(this);
|
||
|
}
|
||
|
ComposerKt.composeRuntimeError("Cannot start a writer when a reader is pending".toString());
|
||
|
throw new KotlinNothingValueException();
|
||
|
}
|
||
|
|
||
|
public final int anchorIndex(Anchor anchor) {
|
||
|
Intrinsics.checkNotNullParameter(anchor, "anchor");
|
||
|
if (!this.writer) {
|
||
|
if (!anchor.getValid()) {
|
||
|
throw new IllegalArgumentException("Anchor refers to a group that was removed".toString());
|
||
|
}
|
||
|
return anchor.getLocation();
|
||
|
}
|
||
|
ComposerKt.composeRuntimeError("Use active SlotWriter to determine anchor location instead".toString());
|
||
|
throw new KotlinNothingValueException();
|
||
|
}
|
||
|
|
||
|
public final boolean ownsAnchor(Anchor anchor) {
|
||
|
int access$search;
|
||
|
Intrinsics.checkNotNullParameter(anchor, "anchor");
|
||
|
return anchor.getValid() && (access$search = SlotTableKt.access$search(this.anchors, anchor.getLocation(), this.groupsSize)) >= 0 && Intrinsics.areEqual(this.anchors.get(access$search), anchor);
|
||
|
}
|
||
|
|
||
|
public final boolean groupContainsAnchor(int groupIndex, Anchor anchor) {
|
||
|
Intrinsics.checkNotNullParameter(anchor, "anchor");
|
||
|
if (!(!this.writer)) {
|
||
|
ComposerKt.composeRuntimeError("Writer is active".toString());
|
||
|
throw new KotlinNothingValueException();
|
||
|
}
|
||
|
if (groupIndex >= 0 && groupIndex < this.groupsSize) {
|
||
|
if (ownsAnchor(anchor)) {
|
||
|
int access$groupSize = SlotTableKt.access$groupSize(this.groups, groupIndex) + groupIndex;
|
||
|
int location = anchor.getLocation();
|
||
|
if (groupIndex <= location && location < access$groupSize) {
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
ComposerKt.composeRuntimeError("Invalid group index".toString());
|
||
|
throw new KotlinNothingValueException();
|
||
|
}
|
||
|
|
||
|
public final void close$runtime_release(SlotReader reader) {
|
||
|
Intrinsics.checkNotNullParameter(reader, "reader");
|
||
|
if (reader.getTable() == this && this.readers > 0) {
|
||
|
this.readers--;
|
||
|
} else {
|
||
|
ComposerKt.composeRuntimeError("Unexpected reader close()".toString());
|
||
|
throw new KotlinNothingValueException();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public final void close$runtime_release(SlotWriter writer, int[] groups, int groupsSize, Object[] slots, int slotsSize, ArrayList<Anchor> anchors) {
|
||
|
Intrinsics.checkNotNullParameter(writer, "writer");
|
||
|
Intrinsics.checkNotNullParameter(groups, "groups");
|
||
|
Intrinsics.checkNotNullParameter(slots, "slots");
|
||
|
Intrinsics.checkNotNullParameter(anchors, "anchors");
|
||
|
if (writer.getTable() != this || !this.writer) {
|
||
|
throw new IllegalArgumentException("Unexpected writer close()".toString());
|
||
|
}
|
||
|
this.writer = false;
|
||
|
setTo$runtime_release(groups, groupsSize, slots, slotsSize, anchors);
|
||
|
}
|
||
|
|
||
|
public final List<RecomposeScopeImpl> invalidateGroupsWithKey$runtime_release(int target) {
|
||
|
ArrayList arrayList = new ArrayList();
|
||
|
ArrayList arrayList2 = new ArrayList();
|
||
|
Ref.BooleanRef booleanRef = new Ref.BooleanRef();
|
||
|
booleanRef.element = true;
|
||
|
SlotReader openReader = openReader();
|
||
|
try {
|
||
|
invalidateGroupsWithKey$lambda$14$scanGroup(openReader, target, arrayList, booleanRef, this, arrayList2);
|
||
|
Unit unit = Unit.INSTANCE;
|
||
|
openReader.close();
|
||
|
SlotWriter openWriter = openWriter();
|
||
|
try {
|
||
|
openWriter.startGroup();
|
||
|
int size = arrayList.size();
|
||
|
for (int i = 0; i < size; i++) {
|
||
|
Anchor anchor = (Anchor) arrayList.get(i);
|
||
|
if (anchor.toIndexFor(openWriter) >= openWriter.getCurrentGroup()) {
|
||
|
openWriter.seek(anchor);
|
||
|
openWriter.bashGroup$runtime_release();
|
||
|
}
|
||
|
}
|
||
|
openWriter.skipToGroupEnd();
|
||
|
openWriter.endGroup();
|
||
|
openWriter.close();
|
||
|
if (booleanRef.element) {
|
||
|
return arrayList2;
|
||
|
}
|
||
|
return null;
|
||
|
} catch (Throwable th) {
|
||
|
openWriter.close();
|
||
|
throw th;
|
||
|
}
|
||
|
} catch (Throwable th2) {
|
||
|
openReader.close();
|
||
|
throw th2;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private static final void invalidateGroupsWithKey$lambda$14$scanGroup(SlotReader slotReader, int i, List<Anchor> list, Ref.BooleanRef booleanRef, SlotTable slotTable, List<RecomposeScopeImpl> list2) {
|
||
|
if (slotReader.getGroupKey() == i) {
|
||
|
list.add(SlotReader.anchor$default(slotReader, 0, 1, null));
|
||
|
if (booleanRef.element) {
|
||
|
RecomposeScopeImpl findEffectiveRecomposeScope = slotTable.findEffectiveRecomposeScope(slotReader.getCurrentGroup());
|
||
|
if (findEffectiveRecomposeScope != null) {
|
||
|
list2.add(findEffectiveRecomposeScope);
|
||
|
} else {
|
||
|
booleanRef.element = false;
|
||
|
list2.clear();
|
||
|
}
|
||
|
}
|
||
|
slotReader.skipGroup();
|
||
|
return;
|
||
|
}
|
||
|
slotReader.startGroup();
|
||
|
while (!slotReader.isGroupEnd()) {
|
||
|
invalidateGroupsWithKey$lambda$14$scanGroup(slotReader, i, list, booleanRef, slotTable, list2);
|
||
|
}
|
||
|
slotReader.endGroup();
|
||
|
}
|
||
|
|
||
|
public final boolean containsMark() {
|
||
|
return this.groupsSize > 0 && SlotTableKt.access$containsMark(this.groups, 0);
|
||
|
}
|
||
|
|
||
|
private final RecomposeScopeImpl findEffectiveRecomposeScope(int group) {
|
||
|
while (group > 0) {
|
||
|
Iterator<Object> it = new DataIterator(this, group).iterator();
|
||
|
while (it.hasNext()) {
|
||
|
Object next = it.next();
|
||
|
if (next instanceof RecomposeScopeImpl) {
|
||
|
return (RecomposeScopeImpl) next;
|
||
|
}
|
||
|
}
|
||
|
group = SlotTableKt.access$parentAnchor(this.groups, group);
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
private final boolean invalidateGroup(int group) {
|
||
|
while (group >= 0) {
|
||
|
Iterator<Object> it = new DataIterator(this, group).iterator();
|
||
|
while (it.hasNext()) {
|
||
|
Object next = it.next();
|
||
|
if (next instanceof RecomposeScopeImpl) {
|
||
|
RecomposeScopeImpl recomposeScopeImpl = (RecomposeScopeImpl) next;
|
||
|
recomposeScopeImpl.setRequiresRecompose(true);
|
||
|
return recomposeScopeImpl.invalidateForResult(null) != InvalidationResult.IGNORED;
|
||
|
}
|
||
|
}
|
||
|
group = SlotTableKt.access$parentAnchor(this.groups, group);
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
public final void verifyWellFormed() {
|
||
|
Ref.IntRef intRef = new Ref.IntRef();
|
||
|
int i = -1;
|
||
|
if (this.groupsSize > 0) {
|
||
|
while (intRef.element < this.groupsSize) {
|
||
|
verifyWellFormed$validateGroup(intRef, this, -1, intRef.element + SlotTableKt.access$groupSize(this.groups, intRef.element));
|
||
|
}
|
||
|
if (intRef.element != this.groupsSize) {
|
||
|
throw new IllegalStateException(("Incomplete group at root " + intRef.element + " expected to be " + this.groupsSize).toString());
|
||
|
}
|
||
|
}
|
||
|
int length = this.slots.length;
|
||
|
for (int i2 = this.slotsSize; i2 < length; i2++) {
|
||
|
if (this.slots[i2] != null) {
|
||
|
throw new IllegalStateException(("Non null value in the slot gap at index " + i2).toString());
|
||
|
}
|
||
|
}
|
||
|
ArrayList<Anchor> arrayList = this.anchors;
|
||
|
int size = arrayList.size();
|
||
|
int i3 = 0;
|
||
|
while (i3 < size) {
|
||
|
int indexFor = arrayList.get(i3).toIndexFor(this);
|
||
|
if (indexFor < 0 || indexFor > this.groupsSize) {
|
||
|
throw new IllegalArgumentException("Invalid anchor, location out of bound".toString());
|
||
|
}
|
||
|
if (i >= indexFor) {
|
||
|
throw new IllegalArgumentException("Anchor is out of order".toString());
|
||
|
}
|
||
|
i3++;
|
||
|
i = indexFor;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private static final int verifyWellFormed$validateGroup(Ref.IntRef intRef, SlotTable slotTable, int i, int i2) {
|
||
|
int i3 = intRef.element;
|
||
|
int i4 = i3 + 1;
|
||
|
intRef.element = i4;
|
||
|
int access$parentAnchor = SlotTableKt.access$parentAnchor(slotTable.groups, i3);
|
||
|
if (access$parentAnchor != i) {
|
||
|
throw new IllegalStateException(("Invalid parent index detected at " + i3 + ", expected parent index to be " + i + " found " + access$parentAnchor).toString());
|
||
|
}
|
||
|
int access$groupSize = SlotTableKt.access$groupSize(slotTable.groups, i3) + i3;
|
||
|
if (access$groupSize > slotTable.groupsSize) {
|
||
|
throw new IllegalStateException(("A group extends past the end of the table at " + i3).toString());
|
||
|
}
|
||
|
if (access$groupSize > i2) {
|
||
|
throw new IllegalStateException(("A group extends past its parent group at " + i3).toString());
|
||
|
}
|
||
|
int access$dataAnchor = SlotTableKt.access$dataAnchor(slotTable.groups, i3);
|
||
|
int access$dataAnchor2 = i3 >= slotTable.groupsSize - 1 ? slotTable.slotsSize : SlotTableKt.access$dataAnchor(slotTable.groups, i4);
|
||
|
if (access$dataAnchor2 > slotTable.slots.length) {
|
||
|
throw new IllegalStateException(("Slots for " + i3 + " extend past the end of the slot table").toString());
|
||
|
}
|
||
|
if (access$dataAnchor > access$dataAnchor2) {
|
||
|
throw new IllegalStateException(("Invalid data anchor at " + i3).toString());
|
||
|
}
|
||
|
if (SlotTableKt.access$slotAnchor(slotTable.groups, i3) > access$dataAnchor2) {
|
||
|
throw new IllegalStateException(("Slots start out of range at " + i3).toString());
|
||
|
}
|
||
|
if (access$dataAnchor2 - access$dataAnchor < (SlotTableKt.access$isNode(slotTable.groups, i3) ? 1 : 0) + (SlotTableKt.access$hasObjectKey(slotTable.groups, i3) ? 1 : 0) + (SlotTableKt.access$hasAux(slotTable.groups, i3) ? 1 : 0)) {
|
||
|
throw new IllegalStateException(("Not enough slots added for group " + i3).toString());
|
||
|
}
|
||
|
boolean access$isNode = SlotTableKt.access$isNode(slotTable.groups, i3);
|
||
|
if (access$isNode && slotTable.slots[SlotTableKt.access$nodeIndex(slotTable.groups, i3)] == null) {
|
||
|
throw new IllegalStateException(("No node recorded for a node group at " + i3).toString());
|
||
|
}
|
||
|
int i5 = 0;
|
||
|
while (intRef.element < access$groupSize) {
|
||
|
i5 += verifyWellFormed$validateGroup(intRef, slotTable, i3, access$groupSize);
|
||
|
}
|
||
|
int access$nodeCount = SlotTableKt.access$nodeCount(slotTable.groups, i3);
|
||
|
int access$groupSize2 = SlotTableKt.access$groupSize(slotTable.groups, i3);
|
||
|
if (access$nodeCount != i5) {
|
||
|
throw new IllegalStateException(("Incorrect node count detected at " + i3 + ", expected " + access$nodeCount + ", received " + i5).toString());
|
||
|
}
|
||
|
int i6 = intRef.element - i3;
|
||
|
if (access$groupSize2 != i6) {
|
||
|
throw new IllegalStateException(("Incorrect slot count detected at " + i3 + ", expected " + access$groupSize2 + ", received " + i6).toString());
|
||
|
}
|
||
|
if (SlotTableKt.access$containsAnyMark(slotTable.groups, i3) && i3 > 0 && !SlotTableKt.access$containsMark(slotTable.groups, i)) {
|
||
|
throw new IllegalStateException(("Expected group " + i + " to record it contains a mark because " + i3 + " does").toString());
|
||
|
}
|
||
|
if (access$isNode) {
|
||
|
return 1;
|
||
|
}
|
||
|
return i5;
|
||
|
}
|
||
|
|
||
|
public final String asString() {
|
||
|
if (this.writer) {
|
||
|
return super.toString();
|
||
|
}
|
||
|
StringBuilder sb = new StringBuilder();
|
||
|
sb.append(super.toString());
|
||
|
sb.append('\n');
|
||
|
int i = this.groupsSize;
|
||
|
if (i > 0) {
|
||
|
int i2 = 0;
|
||
|
while (i2 < i) {
|
||
|
i2 += emitGroup(sb, i2, 0);
|
||
|
}
|
||
|
} else {
|
||
|
sb.append("<EMPTY>");
|
||
|
}
|
||
|
String sb2 = sb.toString();
|
||
|
Intrinsics.checkNotNullExpressionValue(sb2, "StringBuilder().apply(builderAction).toString()");
|
||
|
return sb2;
|
||
|
}
|
||
|
|
||
|
private final int emitGroup(StringBuilder sb, int i, int i2) {
|
||
|
for (int i3 = 0; i3 < i2; i3++) {
|
||
|
sb.append(' ');
|
||
|
}
|
||
|
sb.append("Group(");
|
||
|
sb.append(i);
|
||
|
sb.append(") key=");
|
||
|
sb.append(SlotTableKt.access$key(this.groups, i));
|
||
|
int access$groupSize = SlotTableKt.access$groupSize(this.groups, i);
|
||
|
sb.append(", nodes=");
|
||
|
sb.append(SlotTableKt.access$nodeCount(this.groups, i));
|
||
|
sb.append(", size=");
|
||
|
sb.append(access$groupSize);
|
||
|
if (SlotTableKt.access$hasMark(this.groups, i)) {
|
||
|
sb.append(", mark");
|
||
|
}
|
||
|
if (SlotTableKt.access$containsMark(this.groups, i)) {
|
||
|
sb.append(", contains mark");
|
||
|
}
|
||
|
int emitGroup$dataIndex = emitGroup$dataIndex(this, i);
|
||
|
int i4 = i + 1;
|
||
|
int emitGroup$dataIndex2 = emitGroup$dataIndex(this, i4);
|
||
|
if (emitGroup$dataIndex >= 0 && emitGroup$dataIndex <= emitGroup$dataIndex2 && emitGroup$dataIndex2 <= this.slotsSize) {
|
||
|
if (SlotTableKt.access$hasObjectKey(this.groups, i)) {
|
||
|
sb.append(" objectKey=" + this.slots[SlotTableKt.access$objectKeyIndex(this.groups, i)]);
|
||
|
}
|
||
|
if (SlotTableKt.access$isNode(this.groups, i)) {
|
||
|
sb.append(" node=" + this.slots[SlotTableKt.access$nodeIndex(this.groups, i)]);
|
||
|
}
|
||
|
if (SlotTableKt.access$hasAux(this.groups, i)) {
|
||
|
sb.append(" aux=" + this.slots[SlotTableKt.access$auxIndex(this.groups, i)]);
|
||
|
}
|
||
|
int access$slotAnchor = SlotTableKt.access$slotAnchor(this.groups, i);
|
||
|
if (access$slotAnchor < emitGroup$dataIndex2) {
|
||
|
sb.append(", slots=[");
|
||
|
sb.append(access$slotAnchor);
|
||
|
sb.append(": ");
|
||
|
for (int i5 = access$slotAnchor; i5 < emitGroup$dataIndex2; i5++) {
|
||
|
if (i5 != access$slotAnchor) {
|
||
|
sb.append(", ");
|
||
|
}
|
||
|
sb.append(String.valueOf(this.slots[i5]));
|
||
|
}
|
||
|
sb.append("]");
|
||
|
}
|
||
|
} else {
|
||
|
sb.append(", *invalid data offsets " + emitGroup$dataIndex + '-' + emitGroup$dataIndex2 + '*');
|
||
|
}
|
||
|
sb.append('\n');
|
||
|
int i6 = i + access$groupSize;
|
||
|
while (i4 < i6) {
|
||
|
i4 += emitGroup(sb, i4, i2 + 1);
|
||
|
}
|
||
|
return access$groupSize;
|
||
|
}
|
||
|
|
||
|
private static final int emitGroup$dataIndex(SlotTable slotTable, int i) {
|
||
|
return i >= slotTable.groupsSize ? slotTable.slotsSize : SlotTableKt.access$dataAnchor(slotTable.groups, i);
|
||
|
}
|
||
|
|
||
|
private final List<Integer> keys() {
|
||
|
return SlotTableKt.access$keys(this.groups, this.groupsSize * 5);
|
||
|
}
|
||
|
|
||
|
private final List<Integer> nodes() {
|
||
|
return SlotTableKt.access$nodeCounts(this.groups, this.groupsSize * 5);
|
||
|
}
|
||
|
|
||
|
private final List<Integer> parentIndexes() {
|
||
|
return SlotTableKt.access$parentAnchors(this.groups, this.groupsSize * 5);
|
||
|
}
|
||
|
|
||
|
private final List<Integer> dataIndexes() {
|
||
|
return SlotTableKt.access$dataAnchors(this.groups, this.groupsSize * 5);
|
||
|
}
|
||
|
|
||
|
private final List<Integer> groupSizes() {
|
||
|
return SlotTableKt.access$groupSizes(this.groups, this.groupsSize * 5);
|
||
|
}
|
||
|
|
||
|
public final List<Object> slotsOf$runtime_release(int group) {
|
||
|
int access$dataAnchor = SlotTableKt.access$dataAnchor(this.groups, group);
|
||
|
int i = group + 1;
|
||
|
return ArraysKt.toList(this.slots).subList(access$dataAnchor, i < this.groupsSize ? SlotTableKt.access$dataAnchor(this.groups, i) : this.slots.length);
|
||
|
}
|
||
|
|
||
|
public final Object slot$runtime_release(int group, int slotIndex) {
|
||
|
int access$slotAnchor = SlotTableKt.access$slotAnchor(this.groups, group);
|
||
|
int i = group + 1;
|
||
|
return (slotIndex < 0 || slotIndex >= (i < this.groupsSize ? SlotTableKt.access$dataAnchor(this.groups, i) : this.slots.length) - access$slotAnchor) ? Composer.INSTANCE.getEmpty() : this.slots[access$slotAnchor + slotIndex];
|
||
|
}
|
||
|
|
||
|
@Override // androidx.compose.runtime.tooling.CompositionData
|
||
|
public Iterable<CompositionGroup> getCompositionGroups() {
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
@Override // java.lang.Iterable
|
||
|
public Iterator<CompositionGroup> iterator() {
|
||
|
return new GroupIterator(this, 0, this.groupsSize);
|
||
|
}
|
||
|
|
||
|
@Override // androidx.compose.runtime.tooling.CompositionData
|
||
|
public CompositionGroup find(Object identityToFind) {
|
||
|
Intrinsics.checkNotNullParameter(identityToFind, "identityToFind");
|
||
|
return new SlotTableGroup(this, 0, 0, 4, null).find(identityToFind);
|
||
|
}
|
||
|
|
||
|
public final Anchor anchor(int index) {
|
||
|
int i;
|
||
|
if (!(!this.writer)) {
|
||
|
ComposerKt.composeRuntimeError("use active SlotWriter to create an anchor location instead ".toString());
|
||
|
throw new KotlinNothingValueException();
|
||
|
}
|
||
|
if (index < 0 || index >= (i = this.groupsSize)) {
|
||
|
throw new IllegalArgumentException("Parameter index is out of range".toString());
|
||
|
}
|
||
|
ArrayList<Anchor> arrayList = this.anchors;
|
||
|
int access$search = SlotTableKt.access$search(arrayList, index, i);
|
||
|
if (access$search < 0) {
|
||
|
Anchor anchor = new Anchor(index);
|
||
|
arrayList.add(-(access$search + 1), anchor);
|
||
|
return anchor;
|
||
|
}
|
||
|
Anchor anchor2 = arrayList.get(access$search);
|
||
|
Intrinsics.checkNotNullExpressionValue(anchor2, "get(location)");
|
||
|
return anchor2;
|
||
|
}
|
||
|
}
|