- Added realracing3-community.apk (71.57 MB) - Removed 32-bit support (armeabi-v7a) - Only includes arm64-v8a libraries - Decompiled source code included - Added README-community.md with analysis
136 lines
3.4 KiB
Java
136 lines
3.4 KiB
Java
package com.google.zxing.common;
|
|
|
|
import java.util.Arrays;
|
|
|
|
/* loaded from: classes3.dex */
|
|
public final class BitArray implements Cloneable {
|
|
public int[] bits;
|
|
public int size;
|
|
|
|
public int getSize() {
|
|
return this.size;
|
|
}
|
|
|
|
public BitArray() {
|
|
this.size = 0;
|
|
this.bits = new int[1];
|
|
}
|
|
|
|
public BitArray(int[] iArr, int i) {
|
|
this.bits = iArr;
|
|
this.size = i;
|
|
}
|
|
|
|
public int getSizeInBytes() {
|
|
return (this.size + 7) / 8;
|
|
}
|
|
|
|
public final void ensureCapacity(int i) {
|
|
if (i > (this.bits.length << 5)) {
|
|
int[] makeArray = makeArray(i);
|
|
int[] iArr = this.bits;
|
|
System.arraycopy(iArr, 0, makeArray, 0, iArr.length);
|
|
this.bits = makeArray;
|
|
}
|
|
}
|
|
|
|
public boolean get(int i) {
|
|
return ((1 << (i & 31)) & this.bits[i / 32]) != 0;
|
|
}
|
|
|
|
public void appendBit(boolean z) {
|
|
ensureCapacity(this.size + 1);
|
|
if (z) {
|
|
int[] iArr = this.bits;
|
|
int i = this.size;
|
|
int i2 = i / 32;
|
|
iArr[i2] = (1 << (i & 31)) | iArr[i2];
|
|
}
|
|
this.size++;
|
|
}
|
|
|
|
public void appendBits(int i, int i2) {
|
|
if (i2 < 0 || i2 > 32) {
|
|
throw new IllegalArgumentException("Num bits must be between 0 and 32");
|
|
}
|
|
ensureCapacity(this.size + i2);
|
|
while (i2 > 0) {
|
|
boolean z = true;
|
|
if (((i >> (i2 - 1)) & 1) != 1) {
|
|
z = false;
|
|
}
|
|
appendBit(z);
|
|
i2--;
|
|
}
|
|
}
|
|
|
|
public void appendBitArray(BitArray bitArray) {
|
|
int i = bitArray.size;
|
|
ensureCapacity(this.size + i);
|
|
for (int i2 = 0; i2 < i; i2++) {
|
|
appendBit(bitArray.get(i2));
|
|
}
|
|
}
|
|
|
|
public void xor(BitArray bitArray) {
|
|
if (this.size != bitArray.size) {
|
|
throw new IllegalArgumentException("Sizes don't match");
|
|
}
|
|
int i = 0;
|
|
while (true) {
|
|
int[] iArr = this.bits;
|
|
if (i >= iArr.length) {
|
|
return;
|
|
}
|
|
iArr[i] = iArr[i] ^ bitArray.bits[i];
|
|
i++;
|
|
}
|
|
}
|
|
|
|
public void toBytes(int i, byte[] bArr, int i2, int i3) {
|
|
for (int i4 = 0; i4 < i3; i4++) {
|
|
int i5 = 0;
|
|
for (int i6 = 0; i6 < 8; i6++) {
|
|
if (get(i)) {
|
|
i5 |= 1 << (7 - i6);
|
|
}
|
|
i++;
|
|
}
|
|
bArr[i2 + i4] = (byte) i5;
|
|
}
|
|
}
|
|
|
|
public static int[] makeArray(int i) {
|
|
return new int[(i + 31) / 32];
|
|
}
|
|
|
|
public boolean equals(Object obj) {
|
|
if (!(obj instanceof BitArray)) {
|
|
return false;
|
|
}
|
|
BitArray bitArray = (BitArray) obj;
|
|
return this.size == bitArray.size && Arrays.equals(this.bits, bitArray.bits);
|
|
}
|
|
|
|
public int hashCode() {
|
|
return (this.size * 31) + Arrays.hashCode(this.bits);
|
|
}
|
|
|
|
public String toString() {
|
|
int i = this.size;
|
|
StringBuilder sb = new StringBuilder(i + (i / 8) + 1);
|
|
for (int i2 = 0; i2 < this.size; i2++) {
|
|
if ((i2 & 7) == 0) {
|
|
sb.append(' ');
|
|
}
|
|
sb.append(get(i2) ? 'X' : '.');
|
|
}
|
|
return sb.toString();
|
|
}
|
|
|
|
/* renamed from: clone, reason: merged with bridge method [inline-methods] */
|
|
public BitArray m858clone() {
|
|
return new BitArray((int[]) this.bits.clone(), this.size);
|
|
}
|
|
}
|