ShadowParcel.java revision 0bf1d6a0ed6c10719f9390cbed31c64142c41ccf
1cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhampackage com.xtremelabs.robolectric.shadows;
2cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowham
3cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhamimport android.os.Parcel;
46ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkelimport android.os.Parcelable;
54851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkelimport android.os.Bundle;
6cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhamimport com.xtremelabs.robolectric.Robolectric;
7cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhamimport com.xtremelabs.robolectric.internal.Implementation;
8cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhamimport com.xtremelabs.robolectric.internal.Implements;
9053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawalaimport com.xtremelabs.robolectric.internal.RealObject;
10cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowham
11e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plissonimport java.util.ArrayList;
12e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plissonimport java.util.List;
13e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson
14cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowham@Implements(Parcel.class)
156ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel@SuppressWarnings("unchecked")
16cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowhampublic class ShadowParcel {
177598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    private ArrayList parcelData = new ArrayList();
187598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    private int index = 0;
197598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
20053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    @RealObject
21053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    private Parcel realParcel;
22053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala
237598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    @Implementation
247598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public static Parcel obtain() {
257598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        return Robolectric.newInstanceOf(Parcel.class);
267598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
277598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
287598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    @Implementation
297598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public void writeString(String str) {
307598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        if (str == null) {
317598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz            return;
327598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        }
337598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        parcelData.add(str);
347598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
357598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
367598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    @Implementation
377598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public void writeInt(int i) {
387598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        parcelData.add(i);
397598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
407598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
417598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    @Implementation
42e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson    public void writeLong(long i) {
43e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson        parcelData.add(i);
44e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson    }
454851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel
460fbe55be997150aa5c41faa8276e8b7ab8d826ecadriancowham    @Implementation
47dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void writeFloat(float f) {
48dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        parcelData.add(f);
49dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
50dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
51dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
52dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void writeDouble(double f) {
53dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        parcelData.add(f);
54dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
55dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
56dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
570fbe55be997150aa5c41faa8276e8b7ab8d826ecadriancowham    @SuppressWarnings("unchecked")
58053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    public void writeByte(byte b) {
59053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        parcelData.add(b);
600fbe55be997150aa5c41faa8276e8b7ab8d826ecadriancowham    }
61e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson
62e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson    @Implementation
637598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public String readString() {
647598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        return index < parcelData.size() ? (String) parcelData.get(index++) : null;
657598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
667598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
677598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    @Implementation
687598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public int readInt() {
697598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        return index < parcelData.size() ? (Integer) parcelData.get(index++) : 0;
707598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
717598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
72e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson    @Implementation
73dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public float readFloat() {
74dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        return index < parcelData.size() ? (Float) parcelData.get(index++) : 0;
75dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
76dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
77dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
78dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public double readDouble() {
79dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        return index < parcelData.size() ? (Double) parcelData.get(index++) : 0;
80dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
81dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
82dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
830fbe55be997150aa5c41faa8276e8b7ab8d826ecadriancowham    public byte readByte() {
844851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel        return index < parcelData.size() ? (Byte) parcelData.get(index++) : 0;
850fbe55be997150aa5c41faa8276e8b7ab8d826ecadriancowham    }
864851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel
870fbe55be997150aa5c41faa8276e8b7ab8d826ecadriancowham    @Implementation
88e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson    public long readLong() {
89e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson        return index < parcelData.size() ? (Long) parcelData.get(index++) : 0;
90e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson    }
91e1deb33276ab52fe01c4d6a4f0a3d02c29ebdc6aSebastien Plisson
926ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel    @Implementation
934851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel    public Bundle readBundle() {
944851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel        return index < parcelData.size() ? (Bundle) parcelData.get(index++) : null;
954851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel    }
964851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel
974851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel    @Implementation
984851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel    public Bundle readBundle(ClassLoader loader) {
994851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel        return readBundle();
1004851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel    }
1014851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel
1024851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel    @Implementation
1034851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel    public void writeBundle(Bundle bundle) {
1044851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel        parcelData.add(bundle);
1054851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel    }
1064851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel
1074851b76e6ef185e8588c351cb303eb90f7e765e9Jan Berkel    @Implementation
1086ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel    public void writeParcelable(Parcelable p, int flags) {
1096ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel        parcelData.add(p);
1106ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel    }
1116ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel
1126ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel    @Implementation
1136ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel    public Parcelable readParcelable(ClassLoader cl) {
1146ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel        return index < parcelData.size() ? (Parcelable) parcelData.get(index++) : null;
1156ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel    }
1166ca1c54a32a83fcc3e347c141a0fc3ba653193b3Jan Berkel
117dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
118dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void readFloatArray(float[] val) {
119dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        int n = readInt();
120dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        if (val.length != n) throw new RuntimeException("bad array lengths");
121053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        for (int i = 0; i < val.length; i++) {
122dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel            val[i] = readFloat();
123dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        }
124dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
125dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
126dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
127dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void writeFloatArray(float[] val) {
128dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        writeInt(val.length);
129dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        for (float f : val) writeFloat(f);
130dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
131dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
132dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
133dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void writeDoubleArray(double[] val) {
134dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        writeInt(val.length);
135dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        for (double f : val) writeDouble(f);
136dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
137dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
138dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
139dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void readDoubleArray(double[] val) {
140dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        int n = readInt();
141dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        if (val.length != n) throw new RuntimeException("bad array lengths");
142053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        for (int i = 0; i < val.length; i++) {
143dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel            val[i] = readDouble();
144dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        }
145dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
146dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
147dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
148dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void writeIntArray(int[] val) {
149dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        writeInt(val.length);
150dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        for (int f : val) writeInt(f);
151dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
152dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
153dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
154dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void readIntArray(int[] val) {
155dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        int n = readInt();
156dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        if (val.length != n) throw new RuntimeException("bad array lengths");
157053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        for (int i = 0; i < val.length; i++) {
158dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel            val[i] = readInt();
159dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        }
160dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
161dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
162dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
163dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void writeLongArray(long[] val) {
164dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        writeInt(val.length);
165dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        for (long f : val) writeLong(f);
166dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
167dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
168dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
169dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void readLongArray(long[] val) {
170dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        int n = readInt();
171dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        if (val.length != n) throw new RuntimeException("bad array lengths");
172053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        for (int i = 0; i < val.length; i++) {
173dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel            val[i] = readLong();
174dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        }
175dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
176dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
177dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
178dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void writeStringArray(String[] val) {
179dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        writeInt(val.length);
180dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        for (String f : val) writeString(f);
181dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
182dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
183dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    @Implementation
1840bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala    public void readStringArray(String[] dest) {
185dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        int n = readInt();
1860bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala        if (dest.length != n) throw new RuntimeException("bad array lengths");
1870bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala        for (int i = 0; i < dest.length; i++) {
1880bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala            dest[i] = readString();
1890bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala        }
1900bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala    }
1910bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala
1920bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala    @Implementation
1930bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala    public void writeStringList(List<String> strings) {
1940bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala        if (strings == null) {
1950bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala            writeInt(-1);
1960bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala            return;
1970bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala        }
1980bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala        int count = strings.size();
1990bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala        int i=0;
2000bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala        writeInt(count);
2010bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala        while (i < count) {
2020bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala            writeString(strings.get(i));
2030bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala            i++;
2040bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala        }
2050bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala    }
2060bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala
2070bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala    @Implementation
2080bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala    public void readStringList(List<String> list) {
2090bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala        int listSizeBeforeChange = list.size();
2100bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala        int addCount = readInt();
2110bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala        int i = 0;
2120bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala        for (; i < listSizeBeforeChange && i < addCount; i++) {
2130bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala            list.set(i, readString());
2140bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala        }
2150bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala        for (; i<addCount; i++) {
2160bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala            list.add(readString());
2170bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala        }
2180bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala        for (; i<listSizeBeforeChange; i++) {
2190bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala            list.remove(addCount);
220dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        }
221dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
222dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
223053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    @Implementation
2240bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala    public ArrayList<String> createStringArrayList() {
225053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        int n = readInt();
226053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        if (n < 0) {
227053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            return null;
228053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        }
229053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala
230053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        ArrayList<String> l = new ArrayList<String>(n);
231053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        while (n > 0) {
232053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            l.add(readString());
233053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            n--;
234053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        }
235053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        return l;
236053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    }
237dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
238053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    @Implementation
239053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    public ArrayList createTypedArrayList(Parcelable.Creator c) {
240053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        int n = readInt();
241053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        if (n < 0) {
242053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            return null;
243053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        }
244dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
245053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        ArrayList l = new ArrayList(n);
246dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
247053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        while (n > 0) {
248053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            if (readInt() != 0) {
249053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala                l.add(c.createFromParcel(realParcel));
250053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            } else {
251053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala                l.add(null);
252053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            }
253053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            n--;
254053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        }
255053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        return l;
256053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    }
257053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala
258053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    @Implementation
2590bf1d6a0ed6c10719f9390cbed31c64142c41ccfPhil Goodwin & Rick Kawala    public void writeTypedList(List val) {
260053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        if (val == null) {
261053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            writeInt(-1);
262053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            return;
263053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        }
264053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala
265053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        int n = val.size();
266053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        int i = 0;
267053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        writeInt(n);
268053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        while (i < n) {
269053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            Object item = val.get(i);
270053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            if (item != null) {
271053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala                writeInt(1);
272053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala                ((Parcelable) item).writeToParcel(realParcel, 0);
273053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            } else {
274053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala                writeInt(0);
275053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            }
276053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            i++;
277053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        }
278053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    }
279dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
2807598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public int getIndex() {
2817598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        return index;
2827598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
2837598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
2847598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public List getParcelData() {
2857598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        return parcelData;
2867598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
287dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
288cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowham}
289