Rabbit-R1/android (non root)/java/sources/androidx/constraintlayout/solver/ArrayLinkedVariables.java

484 lines
16 KiB
Java
Raw Normal View History

2024-05-21 16:08:36 -05:00
package androidx.constraintlayout.solver;
import androidx.constraintlayout.solver.ArrayRow;
import java.util.Arrays;
/* loaded from: classes.dex */
public class ArrayLinkedVariables implements ArrayRow.ArrayRowVariables {
private static final boolean DEBUG = false;
private static final boolean FULL_NEW_CHECK = false;
static final int NONE = -1;
private static float epsilon = 0.001f;
protected final Cache mCache;
private final ArrayRow mRow;
int currentSize = 0;
private int ROW_SIZE = 8;
private SolverVariable candidate = null;
private int[] mArrayIndices = new int[8];
private int[] mArrayNextIndices = new int[8];
private float[] mArrayValues = new float[8];
private int mHead = -1;
private int mLast = -1;
private boolean mDidFillOnce = false;
@Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables
public int getCurrentSize() {
return this.currentSize;
}
public int getHead() {
return this.mHead;
}
/* JADX INFO: Access modifiers changed from: package-private */
public ArrayLinkedVariables(ArrayRow arrayRow, Cache cache) {
this.mRow = arrayRow;
this.mCache = cache;
}
@Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables
public final void put(SolverVariable solverVariable, float f) {
if (f == 0.0f) {
remove(solverVariable, true);
return;
}
int i = this.mHead;
if (i == -1) {
this.mHead = 0;
this.mArrayValues[0] = f;
this.mArrayIndices[0] = solverVariable.id;
this.mArrayNextIndices[this.mHead] = -1;
solverVariable.usageInRowCount++;
solverVariable.addToRow(this.mRow);
this.currentSize++;
if (this.mDidFillOnce) {
return;
}
int i2 = this.mLast + 1;
this.mLast = i2;
int[] iArr = this.mArrayIndices;
if (i2 >= iArr.length) {
this.mDidFillOnce = true;
this.mLast = iArr.length - 1;
return;
}
return;
}
int i3 = -1;
for (int i4 = 0; i != -1 && i4 < this.currentSize; i4++) {
if (this.mArrayIndices[i] == solverVariable.id) {
this.mArrayValues[i] = f;
return;
}
if (this.mArrayIndices[i] < solverVariable.id) {
i3 = i;
}
i = this.mArrayNextIndices[i];
}
int i5 = this.mLast;
int i6 = i5 + 1;
if (this.mDidFillOnce) {
int[] iArr2 = this.mArrayIndices;
if (iArr2[i5] != -1) {
i5 = iArr2.length;
}
} else {
i5 = i6;
}
int[] iArr3 = this.mArrayIndices;
if (i5 >= iArr3.length && this.currentSize < iArr3.length) {
int i7 = 0;
while (true) {
int[] iArr4 = this.mArrayIndices;
if (i7 >= iArr4.length) {
break;
}
if (iArr4[i7] == -1) {
i5 = i7;
break;
}
i7++;
}
}
int[] iArr5 = this.mArrayIndices;
if (i5 >= iArr5.length) {
i5 = iArr5.length;
int i8 = this.ROW_SIZE * 2;
this.ROW_SIZE = i8;
this.mDidFillOnce = false;
this.mLast = i5 - 1;
this.mArrayValues = Arrays.copyOf(this.mArrayValues, i8);
this.mArrayIndices = Arrays.copyOf(this.mArrayIndices, this.ROW_SIZE);
this.mArrayNextIndices = Arrays.copyOf(this.mArrayNextIndices, this.ROW_SIZE);
}
this.mArrayIndices[i5] = solverVariable.id;
this.mArrayValues[i5] = f;
if (i3 != -1) {
int[] iArr6 = this.mArrayNextIndices;
iArr6[i5] = iArr6[i3];
iArr6[i3] = i5;
} else {
this.mArrayNextIndices[i5] = this.mHead;
this.mHead = i5;
}
solverVariable.usageInRowCount++;
solverVariable.addToRow(this.mRow);
int i9 = this.currentSize + 1;
this.currentSize = i9;
if (!this.mDidFillOnce) {
this.mLast++;
}
int[] iArr7 = this.mArrayIndices;
if (i9 >= iArr7.length) {
this.mDidFillOnce = true;
}
if (this.mLast >= iArr7.length) {
this.mDidFillOnce = true;
this.mLast = iArr7.length - 1;
}
}
@Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables
public void add(SolverVariable solverVariable, float f, boolean z) {
float f2 = epsilon;
if (f <= (-f2) || f >= f2) {
int i = this.mHead;
if (i == -1) {
this.mHead = 0;
this.mArrayValues[0] = f;
this.mArrayIndices[0] = solverVariable.id;
this.mArrayNextIndices[this.mHead] = -1;
solverVariable.usageInRowCount++;
solverVariable.addToRow(this.mRow);
this.currentSize++;
if (this.mDidFillOnce) {
return;
}
int i2 = this.mLast + 1;
this.mLast = i2;
int[] iArr = this.mArrayIndices;
if (i2 >= iArr.length) {
this.mDidFillOnce = true;
this.mLast = iArr.length - 1;
return;
}
return;
}
int i3 = -1;
for (int i4 = 0; i != -1 && i4 < this.currentSize; i4++) {
if (this.mArrayIndices[i] == solverVariable.id) {
float[] fArr = this.mArrayValues;
float f3 = fArr[i] + f;
float f4 = epsilon;
if (f3 > (-f4) && f3 < f4) {
f3 = 0.0f;
}
fArr[i] = f3;
if (f3 == 0.0f) {
if (i == this.mHead) {
this.mHead = this.mArrayNextIndices[i];
} else {
int[] iArr2 = this.mArrayNextIndices;
iArr2[i3] = iArr2[i];
}
if (z) {
solverVariable.removeFromRow(this.mRow);
}
if (this.mDidFillOnce) {
this.mLast = i;
}
solverVariable.usageInRowCount--;
this.currentSize--;
return;
}
return;
}
if (this.mArrayIndices[i] < solverVariable.id) {
i3 = i;
}
i = this.mArrayNextIndices[i];
}
int i5 = this.mLast;
int i6 = i5 + 1;
if (this.mDidFillOnce) {
int[] iArr3 = this.mArrayIndices;
if (iArr3[i5] != -1) {
i5 = iArr3.length;
}
} else {
i5 = i6;
}
int[] iArr4 = this.mArrayIndices;
if (i5 >= iArr4.length && this.currentSize < iArr4.length) {
int i7 = 0;
while (true) {
int[] iArr5 = this.mArrayIndices;
if (i7 >= iArr5.length) {
break;
}
if (iArr5[i7] == -1) {
i5 = i7;
break;
}
i7++;
}
}
int[] iArr6 = this.mArrayIndices;
if (i5 >= iArr6.length) {
i5 = iArr6.length;
int i8 = this.ROW_SIZE * 2;
this.ROW_SIZE = i8;
this.mDidFillOnce = false;
this.mLast = i5 - 1;
this.mArrayValues = Arrays.copyOf(this.mArrayValues, i8);
this.mArrayIndices = Arrays.copyOf(this.mArrayIndices, this.ROW_SIZE);
this.mArrayNextIndices = Arrays.copyOf(this.mArrayNextIndices, this.ROW_SIZE);
}
this.mArrayIndices[i5] = solverVariable.id;
this.mArrayValues[i5] = f;
if (i3 != -1) {
int[] iArr7 = this.mArrayNextIndices;
iArr7[i5] = iArr7[i3];
iArr7[i3] = i5;
} else {
this.mArrayNextIndices[i5] = this.mHead;
this.mHead = i5;
}
solverVariable.usageInRowCount++;
solverVariable.addToRow(this.mRow);
this.currentSize++;
if (!this.mDidFillOnce) {
this.mLast++;
}
int i9 = this.mLast;
int[] iArr8 = this.mArrayIndices;
if (i9 >= iArr8.length) {
this.mDidFillOnce = true;
this.mLast = iArr8.length - 1;
}
}
}
@Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables
public float use(ArrayRow arrayRow, boolean z) {
float f = get(arrayRow.variable);
remove(arrayRow.variable, z);
ArrayRow.ArrayRowVariables arrayRowVariables = arrayRow.variables;
int currentSize = arrayRowVariables.getCurrentSize();
for (int i = 0; i < currentSize; i++) {
SolverVariable variable = arrayRowVariables.getVariable(i);
add(variable, arrayRowVariables.get(variable) * f, z);
}
return f;
}
@Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables
public final float remove(SolverVariable solverVariable, boolean z) {
if (this.candidate == solverVariable) {
this.candidate = null;
}
int i = this.mHead;
if (i == -1) {
return 0.0f;
}
int i2 = 0;
int i3 = -1;
while (i != -1 && i2 < this.currentSize) {
if (this.mArrayIndices[i] == solverVariable.id) {
if (i == this.mHead) {
this.mHead = this.mArrayNextIndices[i];
} else {
int[] iArr = this.mArrayNextIndices;
iArr[i3] = iArr[i];
}
if (z) {
solverVariable.removeFromRow(this.mRow);
}
solverVariable.usageInRowCount--;
this.currentSize--;
this.mArrayIndices[i] = -1;
if (this.mDidFillOnce) {
this.mLast = i;
}
return this.mArrayValues[i];
}
i2++;
i3 = i;
i = this.mArrayNextIndices[i];
}
return 0.0f;
}
@Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables
public final void clear() {
int i = this.mHead;
for (int i2 = 0; i != -1 && i2 < this.currentSize; i2++) {
SolverVariable solverVariable = this.mCache.mIndexedVariables[this.mArrayIndices[i]];
if (solverVariable != null) {
solverVariable.removeFromRow(this.mRow);
}
i = this.mArrayNextIndices[i];
}
this.mHead = -1;
this.mLast = -1;
this.mDidFillOnce = false;
this.currentSize = 0;
}
@Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables
public boolean contains(SolverVariable solverVariable) {
int i = this.mHead;
if (i == -1) {
return false;
}
for (int i2 = 0; i != -1 && i2 < this.currentSize; i2++) {
if (this.mArrayIndices[i] == solverVariable.id) {
return true;
}
i = this.mArrayNextIndices[i];
}
return false;
}
@Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables
public int indexOf(SolverVariable solverVariable) {
int i = this.mHead;
if (i == -1) {
return -1;
}
for (int i2 = 0; i != -1 && i2 < this.currentSize; i2++) {
if (this.mArrayIndices[i] == solverVariable.id) {
return i;
}
i = this.mArrayNextIndices[i];
}
return -1;
}
boolean hasAtLeastOnePositiveVariable() {
int i = this.mHead;
for (int i2 = 0; i != -1 && i2 < this.currentSize; i2++) {
if (this.mArrayValues[i] > 0.0f) {
return true;
}
i = this.mArrayNextIndices[i];
}
return false;
}
@Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables
public void invert() {
int i = this.mHead;
for (int i2 = 0; i != -1 && i2 < this.currentSize; i2++) {
float[] fArr = this.mArrayValues;
fArr[i] = fArr[i] * (-1.0f);
i = this.mArrayNextIndices[i];
}
}
@Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables
public void divideByAmount(float f) {
int i = this.mHead;
for (int i2 = 0; i != -1 && i2 < this.currentSize; i2++) {
float[] fArr = this.mArrayValues;
fArr[i] = fArr[i] / f;
i = this.mArrayNextIndices[i];
}
}
public final int getId(int i) {
return this.mArrayIndices[i];
}
public final float getValue(int i) {
return this.mArrayValues[i];
}
public final int getNextIndice(int i) {
return this.mArrayNextIndices[i];
}
SolverVariable getPivotCandidate() {
SolverVariable solverVariable = this.candidate;
if (solverVariable != null) {
return solverVariable;
}
int i = this.mHead;
SolverVariable solverVariable2 = null;
for (int i2 = 0; i != -1 && i2 < this.currentSize; i2++) {
if (this.mArrayValues[i] < 0.0f) {
SolverVariable solverVariable3 = this.mCache.mIndexedVariables[this.mArrayIndices[i]];
if (solverVariable2 == null || solverVariable2.strength < solverVariable3.strength) {
solverVariable2 = solverVariable3;
}
}
i = this.mArrayNextIndices[i];
}
return solverVariable2;
}
@Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables
public SolverVariable getVariable(int i) {
int i2 = this.mHead;
for (int i3 = 0; i2 != -1 && i3 < this.currentSize; i3++) {
if (i3 == i) {
return this.mCache.mIndexedVariables[this.mArrayIndices[i2]];
}
i2 = this.mArrayNextIndices[i2];
}
return null;
}
@Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables
public float getVariableValue(int i) {
int i2 = this.mHead;
for (int i3 = 0; i2 != -1 && i3 < this.currentSize; i3++) {
if (i3 == i) {
return this.mArrayValues[i2];
}
i2 = this.mArrayNextIndices[i2];
}
return 0.0f;
}
@Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables
public final float get(SolverVariable solverVariable) {
int i = this.mHead;
for (int i2 = 0; i != -1 && i2 < this.currentSize; i2++) {
if (this.mArrayIndices[i] == solverVariable.id) {
return this.mArrayValues[i];
}
i = this.mArrayNextIndices[i];
}
return 0.0f;
}
@Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables
public int sizeInBytes() {
return (this.mArrayIndices.length * 12) + 36;
}
@Override // androidx.constraintlayout.solver.ArrayRow.ArrayRowVariables
public void display() {
int i = this.currentSize;
System.out.print("{ ");
for (int i2 = 0; i2 < i; i2++) {
SolverVariable variable = getVariable(i2);
if (variable != null) {
System.out.print(variable + " = " + getVariableValue(i2) + " ");
}
}
System.out.println(" }");
}
public String toString() {
int i = this.mHead;
String str = "";
for (int i2 = 0; i != -1 && i2 < this.currentSize; i2++) {
str = ((str + " -> ") + this.mArrayValues[i] + " : ") + this.mCache.mIndexedVariables[this.mArrayIndices[i]];
i = this.mArrayNextIndices[i];
}
return str;
}
}