ShadowParcel.java revision 053f4fe6cc16a60b7c96ad79472274b3c8604ad2
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
184dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    public void readStringArray(String[] val) {
185dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        int n = readInt();
186dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        if (val.length != n) throw new RuntimeException("bad array lengths");
187053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        for (int i = 0; i < val.length; i++) {
188dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel            val[i] = readString();
189dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel        }
190dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel    }
191dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
192053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    @Implementation
193053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    public final ArrayList<String> createStringArrayList() {
194053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        int n = readInt();
195053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        if (n < 0) {
196053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            return null;
197053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        }
198053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala
199053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        ArrayList<String> l = new ArrayList<String>(n);
200053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        while (n > 0) {
201053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            l.add(readString());
202053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            n--;
203053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        }
204053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        return l;
205053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    }
206dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
207053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    @Implementation
208053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    public ArrayList createTypedArrayList(Parcelable.Creator c) {
209053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        int n = readInt();
210053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        if (n < 0) {
211053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            return null;
212053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        }
213dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
214053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        ArrayList l = new ArrayList(n);
215dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
216053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        while (n > 0) {
217053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            if (readInt() != 0) {
218053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala                l.add(c.createFromParcel(realParcel));
219053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            } else {
220053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala                l.add(null);
221053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            }
222053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            n--;
223053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        }
224053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        return l;
225053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    }
226053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala
227053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    @Implementation
228053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    public final void writeTypedList(List val) {
229053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        if (val == null) {
230053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            writeInt(-1);
231053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            return;
232053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        }
233053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala
234053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        int n = val.size();
235053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        int i = 0;
236053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        writeInt(n);
237053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        while (i < n) {
238053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            Object item = val.get(i);
239053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            if (item != null) {
240053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala                writeInt(1);
241053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala                ((Parcelable) item).writeToParcel(realParcel, 0);
242053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            } else {
243053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala                writeInt(0);
244053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            }
245053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            i++;
246053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        }
247053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    }
248dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
2497598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public int getIndex() {
2507598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        return index;
2517598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
2527598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz
2537598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    public List getParcelData() {
2547598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz        return parcelData;
2557598f0c0b1cce3bf1902772ea09139ef98083864Ryan Richard & Tyler Schultz    }
256dab3a74f4697f04455668863c2c62cd14745c230Jan Berkel
257cb6dcc93e483e0537f8c93595bb6687b392a0d2eadriancowham}
258