Files
rr3-apk/decompiled-community/sources/androidx/core/os/ParcelCompat.java
Daniel Elliott c080f0d97f Add Discord community version (64-bit only)
- 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
2026-02-18 15:48:36 -08:00

231 lines
9.4 KiB
Java

package androidx.core.os;
import android.annotation.SuppressLint;
import android.os.BadParcelableException;
import android.os.Build;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.SparseArray;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import java.io.Serializable;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/* loaded from: classes.dex */
public final class ParcelCompat {
public static boolean readBoolean(@NonNull Parcel parcel) {
return parcel.readInt() != 0;
}
public static void writeBoolean(@NonNull Parcel parcel, boolean z) {
if (Build.VERSION.SDK_INT >= 29) {
Api29Impl.writeBoolean(parcel, z);
} else {
parcel.writeInt(z ? 1 : 0);
}
}
public static <T> void readList(@NonNull Parcel parcel, @NonNull List<? super T> list, @Nullable ClassLoader classLoader, @NonNull Class<T> cls) {
if (Build.VERSION.SDK_INT >= 34) {
Api33Impl.readList(parcel, list, classLoader, cls);
} else {
parcel.readList(list, classLoader);
}
}
@Nullable
@SuppressLint({"ConcreteCollection", "NullableCollection"})
public static <T> ArrayList<T> readArrayList(@NonNull Parcel parcel, @Nullable ClassLoader classLoader, @NonNull Class<? extends T> cls) {
if (Build.VERSION.SDK_INT >= 34) {
return Api33Impl.readArrayList(parcel, classLoader, cls);
}
return parcel.readArrayList(classLoader);
}
@Nullable
@SuppressLint({"ArrayReturn", "NullableCollection"})
public static <T> Object[] readArray(@NonNull Parcel parcel, @Nullable ClassLoader classLoader, @NonNull Class<T> cls) {
if (Build.VERSION.SDK_INT >= 34) {
return Api33Impl.readArray(parcel, classLoader, cls);
}
return parcel.readArray(classLoader);
}
@Nullable
public static <T> SparseArray<T> readSparseArray(@NonNull Parcel parcel, @Nullable ClassLoader classLoader, @NonNull Class<? extends T> cls) {
if (Build.VERSION.SDK_INT >= 34) {
return Api33Impl.readSparseArray(parcel, classLoader, cls);
}
return parcel.readSparseArray(classLoader);
}
public static <K, V> void readMap(@NonNull Parcel parcel, @NonNull Map<? super K, ? super V> map, @Nullable ClassLoader classLoader, @NonNull Class<K> cls, @NonNull Class<V> cls2) {
if (Build.VERSION.SDK_INT >= 34) {
Api33Impl.readMap(parcel, map, classLoader, cls, cls2);
} else {
parcel.readMap(map, classLoader);
}
}
@Nullable
@SuppressLint({"ConcreteCollection", "NullableCollection"})
public static <K, V> HashMap<K, V> readHashMap(@NonNull Parcel parcel, @Nullable ClassLoader classLoader, @NonNull Class<? extends K> cls, @NonNull Class<? extends V> cls2) {
if (Build.VERSION.SDK_INT >= 34) {
return Api33Impl.readHashMap(parcel, classLoader, cls, cls2);
}
return parcel.readHashMap(classLoader);
}
@Nullable
public static <T extends Parcelable> T readParcelable(@NonNull Parcel parcel, @Nullable ClassLoader classLoader, @NonNull Class<T> cls) {
if (Build.VERSION.SDK_INT >= 34) {
return (T) Api33Impl.readParcelable(parcel, classLoader, cls);
}
T t = (T) parcel.readParcelable(classLoader);
if (t == null || cls.isInstance(t)) {
return t;
}
throw new BadParcelableException("Parcelable " + t.getClass() + " is not a subclass of required class " + cls.getName() + " provided in the parameter");
}
@Nullable
@RequiresApi(30)
public static <T> Parcelable.Creator<T> readParcelableCreator(@NonNull Parcel parcel, @Nullable ClassLoader classLoader, @NonNull Class<T> cls) {
if (Build.VERSION.SDK_INT >= 34) {
return Api33Impl.readParcelableCreator(parcel, classLoader, cls);
}
return (Parcelable.Creator<T>) Api30Impl.readParcelableCreator(parcel, classLoader);
}
/* JADX WARN: Multi-variable type inference failed */
@Nullable
@SuppressLint({"ArrayReturn", "NullableCollection"})
@Deprecated
public static <T> T[] readParcelableArray(@NonNull Parcel parcel, @Nullable ClassLoader classLoader, @NonNull Class<T> cls) {
if (Build.VERSION.SDK_INT >= 34) {
return (T[]) Api33Impl.readParcelableArray(parcel, classLoader, cls);
}
T[] tArr = (T[]) parcel.readParcelableArray(classLoader);
if (cls.isAssignableFrom(Parcelable.class)) {
return tArr;
}
T[] tArr2 = (T[]) ((Object[]) Array.newInstance((Class<?>) cls, tArr.length));
for (int i = 0; i < tArr.length; i++) {
try {
tArr2[i] = cls.cast(tArr[i]);
} catch (ClassCastException unused) {
throw new BadParcelableException("Parcelable at index " + i + " is not a subclass of required class " + cls.getName() + " provided in the parameter");
}
}
return tArr2;
}
@Nullable
@SuppressLint({"ArrayReturn", "NullableCollection"})
public static <T> Parcelable[] readParcelableArrayTyped(@NonNull Parcel parcel, @Nullable ClassLoader classLoader, @NonNull Class<T> cls) {
if (Build.VERSION.SDK_INT >= 34) {
return (Parcelable[]) Api33Impl.readParcelableArray(parcel, classLoader, cls);
}
return parcel.readParcelableArray(classLoader);
}
@NonNull
@RequiresApi(api = 29)
public static <T> List<T> readParcelableList(@NonNull Parcel parcel, @NonNull List<T> list, @Nullable ClassLoader classLoader, @NonNull Class<T> cls) {
if (Build.VERSION.SDK_INT >= 34) {
return Api33Impl.readParcelableList(parcel, list, classLoader, cls);
}
return Api29Impl.readParcelableList(parcel, list, classLoader);
}
@Nullable
public static <T extends Serializable> T readSerializable(@NonNull Parcel parcel, @Nullable ClassLoader classLoader, @NonNull Class<T> cls) {
if (Build.VERSION.SDK_INT >= 33) {
return (T) Api33Impl.readSerializable(parcel, classLoader, cls);
}
return (T) parcel.readSerializable();
}
private ParcelCompat() {
}
@RequiresApi(29)
public static class Api29Impl {
private Api29Impl() {
}
public static <T extends Parcelable> List<T> readParcelableList(@NonNull Parcel parcel, @NonNull List<T> list, @Nullable ClassLoader classLoader) {
return parcel.readParcelableList(list, classLoader);
}
public static void writeBoolean(@NonNull Parcel parcel, boolean z) {
parcel.writeBoolean(z);
}
}
@RequiresApi(30)
public static class Api30Impl {
private Api30Impl() {
}
public static Parcelable.Creator<?> readParcelableCreator(@NonNull Parcel parcel, @Nullable ClassLoader classLoader) {
return parcel.readParcelableCreator(classLoader);
}
}
@RequiresApi(33)
public static class Api33Impl {
private Api33Impl() {
}
public static <T extends Serializable> T readSerializable(@NonNull Parcel parcel, @Nullable ClassLoader classLoader, @NonNull Class<T> cls) {
return (T) parcel.readSerializable(classLoader, cls);
}
public static <T extends Parcelable> T readParcelable(@NonNull Parcel parcel, @Nullable ClassLoader classLoader, @NonNull Class<T> cls) {
return (T) parcel.readParcelable(classLoader, cls);
}
public static <T> Parcelable.Creator<T> readParcelableCreator(Parcel parcel, ClassLoader classLoader, Class<T> cls) {
return parcel.readParcelableCreator(classLoader, cls);
}
public static <T> T[] readParcelableArray(@NonNull Parcel parcel, @Nullable ClassLoader classLoader, @NonNull Class<T> cls) {
return (T[]) parcel.readParcelableArray(classLoader, cls);
}
public static <T> List<T> readParcelableList(@NonNull Parcel parcel, @NonNull List<T> list, @Nullable ClassLoader classLoader, @NonNull Class<T> cls) {
return parcel.readParcelableList(list, classLoader, cls);
}
public static <T> void readList(@NonNull Parcel parcel, @NonNull List<? super T> list, @Nullable ClassLoader classLoader, @NonNull Class<T> cls) {
parcel.readList(list, classLoader, cls);
}
public static <T> ArrayList<T> readArrayList(Parcel parcel, ClassLoader classLoader, Class<? extends T> cls) {
return parcel.readArrayList(classLoader, cls);
}
public static <T> T[] readArray(Parcel parcel, ClassLoader classLoader, Class<T> cls) {
return (T[]) parcel.readArray(classLoader, cls);
}
public static <T> SparseArray<T> readSparseArray(Parcel parcel, ClassLoader classLoader, Class<? extends T> cls) {
return parcel.readSparseArray(classLoader, cls);
}
public static <K, V> void readMap(Parcel parcel, Map<? super K, ? super V> map, ClassLoader classLoader, Class<K> cls, Class<V> cls2) {
parcel.readMap(map, classLoader, cls, cls2);
}
public static <V, K> HashMap<K, V> readHashMap(Parcel parcel, ClassLoader classLoader, Class<? extends K> cls, Class<? extends V> cls2) {
return parcel.readHashMap(classLoader, cls, cls2);
}
}
}