1 #[derive(Debug, Clone, PartialEq)]
2 pub enum Union {
3   Ns(Vec<i32>),
4   N(i32),
5   M(i32),
6   S(String),
7   Ibinder(Option<binder::SpIBinder>),
8   Ss(Vec<String>),
9   Be(crate::mangled::_7_android_4_aidl_5_tests_8_ByteEnum),
10 }
11 pub const S1: &str = "a string constant in union";
12 pub(crate) mod mangled { pub use super::Union as _7_android_4_aidl_5_tests_5_Union; }
13 impl Default for Union {
default() -> Self14   fn default() -> Self {
15     Self::Ns(vec!{})
16   }
17 }
18 impl binder::parcel::Serialize for Union {
serialize(&self, parcel: &mut binder::parcel::Parcel) -> binder::Result<()>19   fn serialize(&self, parcel: &mut binder::parcel::Parcel) -> binder::Result<()> {
20     <Self as binder::parcel::SerializeOption>::serialize_option(Some(self), parcel)
21   }
22 }
23 impl binder::parcel::SerializeArray for Union {}
24 impl binder::parcel::SerializeOption for Union {
serialize_option(this: Option<&Self>, parcel: &mut binder::parcel::Parcel) -> binder::Result<()>25   fn serialize_option(this: Option<&Self>, parcel: &mut binder::parcel::Parcel) -> binder::Result<()> {
26     let this = if let Some(this) = this {
27       parcel.write(&1i32)?;
28       this
29     } else {
30       return parcel.write(&0i32);
31     };
32     match this {
33       Self::Ns(v) => {
34         parcel.write(&0i32)?;
35         parcel.write(v)
36       }
37       Self::N(v) => {
38         parcel.write(&1i32)?;
39         parcel.write(v)
40       }
41       Self::M(v) => {
42         parcel.write(&2i32)?;
43         parcel.write(v)
44       }
45       Self::S(v) => {
46         parcel.write(&3i32)?;
47         parcel.write(v)
48       }
49       Self::Ibinder(v) => {
50         parcel.write(&4i32)?;
51         parcel.write(v)
52       }
53       Self::Ss(v) => {
54         parcel.write(&5i32)?;
55         parcel.write(v)
56       }
57       Self::Be(v) => {
58         parcel.write(&6i32)?;
59         parcel.write(v)
60       }
61     }
62   }
63 }
64 impl binder::parcel::Deserialize for Union {
deserialize(parcel: &binder::parcel::Parcel) -> binder::Result<Self>65   fn deserialize(parcel: &binder::parcel::Parcel) -> binder::Result<Self> {
66     <Self as binder::parcel::DeserializeOption>::deserialize_option(parcel)
67        .transpose()
68        .unwrap_or(Err(binder::StatusCode::UNEXPECTED_NULL))
69   }
70 }
71 impl binder::parcel::DeserializeArray for Union {}
72 impl binder::parcel::DeserializeOption for Union {
deserialize_option(parcel: &binder::parcel::Parcel) -> binder::Result<Option<Self>>73   fn deserialize_option(parcel: &binder::parcel::Parcel) -> binder::Result<Option<Self>> {
74     let status: i32 = parcel.read()?;
75     if status == 0 { return Ok(None); }
76     let tag: i32 = parcel.read()?;
77     match tag {
78       0 => {
79         let value: Vec<i32> = parcel.read()?;
80         Ok(Some(Self::Ns(value)))
81       }
82       1 => {
83         let value: i32 = parcel.read()?;
84         Ok(Some(Self::N(value)))
85       }
86       2 => {
87         let value: i32 = parcel.read()?;
88         Ok(Some(Self::M(value)))
89       }
90       3 => {
91         let value: String = parcel.read()?;
92         Ok(Some(Self::S(value)))
93       }
94       4 => {
95         let value: Option<binder::SpIBinder> = parcel.read()?;
96         Ok(Some(Self::Ibinder(value)))
97       }
98       5 => {
99         let value: Vec<String> = parcel.read()?;
100         Ok(Some(Self::Ss(value)))
101       }
102       6 => {
103         let value: crate::mangled::_7_android_4_aidl_5_tests_8_ByteEnum = parcel.read()?;
104         Ok(Some(Self::Be(value)))
105       }
106       _ => {
107         Err(binder::StatusCode::BAD_VALUE)
108       }
109     }
110   }
111 }
112