228 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			228 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package androidx.versionedparcelable;
 | |
| 
 | |
| import android.os.Bundle;
 | |
| import android.os.IBinder;
 | |
| import android.os.IInterface;
 | |
| import android.os.Parcel;
 | |
| import android.os.Parcelable;
 | |
| import android.text.TextUtils;
 | |
| import android.util.SparseIntArray;
 | |
| import androidx.collection.ArrayMap;
 | |
| import java.lang.reflect.Method;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| class VersionedParcelParcel extends VersionedParcel {
 | |
|     private static final boolean DEBUG = false;
 | |
|     private static final String TAG = "VersionedParcelParcel";
 | |
|     private int mCurrentField;
 | |
|     private final int mEnd;
 | |
|     private int mFieldId;
 | |
|     private int mNextRead;
 | |
|     private final int mOffset;
 | |
|     private final Parcel mParcel;
 | |
|     private final SparseIntArray mPositionLookup;
 | |
|     private final String mPrefix;
 | |
| 
 | |
|     VersionedParcelParcel(Parcel parcel) {
 | |
|         this(parcel, parcel.dataPosition(), parcel.dataSize(), "", new ArrayMap(), new ArrayMap(), new ArrayMap());
 | |
|     }
 | |
| 
 | |
|     private VersionedParcelParcel(Parcel parcel, int i, int i2, String str, ArrayMap<String, Method> arrayMap, ArrayMap<String, Method> arrayMap2, ArrayMap<String, Class> arrayMap3) {
 | |
|         super(arrayMap, arrayMap2, arrayMap3);
 | |
|         this.mPositionLookup = new SparseIntArray();
 | |
|         this.mCurrentField = -1;
 | |
|         this.mFieldId = -1;
 | |
|         this.mParcel = parcel;
 | |
|         this.mOffset = i;
 | |
|         this.mEnd = i2;
 | |
|         this.mNextRead = i;
 | |
|         this.mPrefix = str;
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public boolean readField(int i) {
 | |
|         while (this.mNextRead < this.mEnd) {
 | |
|             int i2 = this.mFieldId;
 | |
|             if (i2 == i) {
 | |
|                 return true;
 | |
|             }
 | |
|             if (String.valueOf(i2).compareTo(String.valueOf(i)) > 0) {
 | |
|                 return false;
 | |
|             }
 | |
|             this.mParcel.setDataPosition(this.mNextRead);
 | |
|             int readInt = this.mParcel.readInt();
 | |
|             this.mFieldId = this.mParcel.readInt();
 | |
|             this.mNextRead += readInt;
 | |
|         }
 | |
|         return this.mFieldId == i;
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public void setOutputField(int i) {
 | |
|         closeField();
 | |
|         this.mCurrentField = i;
 | |
|         this.mPositionLookup.put(i, this.mParcel.dataPosition());
 | |
|         writeInt(0);
 | |
|         writeInt(i);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public void closeField() {
 | |
|         int i = this.mCurrentField;
 | |
|         if (i >= 0) {
 | |
|             int i2 = this.mPositionLookup.get(i);
 | |
|             int dataPosition = this.mParcel.dataPosition();
 | |
|             this.mParcel.setDataPosition(i2);
 | |
|             this.mParcel.writeInt(dataPosition - i2);
 | |
|             this.mParcel.setDataPosition(dataPosition);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     protected VersionedParcel createSubParcel() {
 | |
|         Parcel parcel = this.mParcel;
 | |
|         int dataPosition = parcel.dataPosition();
 | |
|         int i = this.mNextRead;
 | |
|         if (i == this.mOffset) {
 | |
|             i = this.mEnd;
 | |
|         }
 | |
|         return new VersionedParcelParcel(parcel, dataPosition, i, this.mPrefix + "  ", this.mReadCache, this.mWriteCache, this.mParcelizerCache);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public void writeByteArray(byte[] bArr) {
 | |
|         if (bArr != null) {
 | |
|             this.mParcel.writeInt(bArr.length);
 | |
|             this.mParcel.writeByteArray(bArr);
 | |
|         } else {
 | |
|             this.mParcel.writeInt(-1);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public void writeByteArray(byte[] bArr, int i, int i2) {
 | |
|         if (bArr != null) {
 | |
|             this.mParcel.writeInt(bArr.length);
 | |
|             this.mParcel.writeByteArray(bArr, i, i2);
 | |
|         } else {
 | |
|             this.mParcel.writeInt(-1);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public void writeInt(int i) {
 | |
|         this.mParcel.writeInt(i);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public void writeLong(long j) {
 | |
|         this.mParcel.writeLong(j);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public void writeFloat(float f) {
 | |
|         this.mParcel.writeFloat(f);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public void writeDouble(double d) {
 | |
|         this.mParcel.writeDouble(d);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public void writeString(String str) {
 | |
|         this.mParcel.writeString(str);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public void writeStrongBinder(IBinder iBinder) {
 | |
|         this.mParcel.writeStrongBinder(iBinder);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public void writeParcelable(Parcelable parcelable) {
 | |
|         this.mParcel.writeParcelable(parcelable, 0);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public void writeBoolean(boolean z) {
 | |
|         this.mParcel.writeInt(z ? 1 : 0);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public void writeStrongInterface(IInterface iInterface) {
 | |
|         this.mParcel.writeStrongInterface(iInterface);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public void writeBundle(Bundle bundle) {
 | |
|         this.mParcel.writeBundle(bundle);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     protected void writeCharSequence(CharSequence charSequence) {
 | |
|         TextUtils.writeToParcel(charSequence, this.mParcel, 0);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     protected CharSequence readCharSequence() {
 | |
|         return (CharSequence) TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(this.mParcel);
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public int readInt() {
 | |
|         return this.mParcel.readInt();
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public long readLong() {
 | |
|         return this.mParcel.readLong();
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public float readFloat() {
 | |
|         return this.mParcel.readFloat();
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public double readDouble() {
 | |
|         return this.mParcel.readDouble();
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public String readString() {
 | |
|         return this.mParcel.readString();
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public IBinder readStrongBinder() {
 | |
|         return this.mParcel.readStrongBinder();
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public byte[] readByteArray() {
 | |
|         int readInt = this.mParcel.readInt();
 | |
|         if (readInt < 0) {
 | |
|             return null;
 | |
|         }
 | |
|         byte[] bArr = new byte[readInt];
 | |
|         this.mParcel.readByteArray(bArr);
 | |
|         return bArr;
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public <T extends Parcelable> T readParcelable() {
 | |
|         return (T) this.mParcel.readParcelable(getClass().getClassLoader());
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public Bundle readBundle() {
 | |
|         return this.mParcel.readBundle(getClass().getClassLoader());
 | |
|     }
 | |
| 
 | |
|     @Override // androidx.versionedparcelable.VersionedParcel
 | |
|     public boolean readBoolean() {
 | |
|         return this.mParcel.readInt() != 0;
 | |
|     }
 | |
| }
 |