• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #[derive(Debug, Clone, PartialEq)]
2 pub enum UnionInUnion {
3   First(crate::mangled::_7_android_4_aidl_5_tests_6_unions_9_EnumUnion),
4   Second(i32),
5 }
6 pub(crate) mod mangled { pub use super::UnionInUnion as _7_android_4_aidl_5_tests_6_unions_12_UnionInUnion; }
7 impl Default for UnionInUnion {
default() -> Self8   fn default() -> Self {
9     Self::First(Default::default())
10   }
11 }
12 impl binder::parcel::Serialize for UnionInUnion {
serialize(&self, parcel: &mut binder::parcel::Parcel) -> binder::Result<()>13   fn serialize(&self, parcel: &mut binder::parcel::Parcel) -> binder::Result<()> {
14     <Self as binder::parcel::SerializeOption>::serialize_option(Some(self), parcel)
15   }
16 }
17 impl binder::parcel::SerializeArray for UnionInUnion {}
18 impl binder::parcel::SerializeOption for UnionInUnion {
serialize_option(this: Option<&Self>, parcel: &mut binder::parcel::Parcel) -> binder::Result<()>19   fn serialize_option(this: Option<&Self>, parcel: &mut binder::parcel::Parcel) -> binder::Result<()> {
20     let this = if let Some(this) = this {
21       parcel.write(&1i32)?;
22       this
23     } else {
24       return parcel.write(&0i32);
25     };
26     match this {
27       Self::First(v) => {
28         parcel.write(&0i32)?;
29         parcel.write(v)
30       }
31       Self::Second(v) => {
32         parcel.write(&1i32)?;
33         parcel.write(v)
34       }
35     }
36   }
37 }
38 impl binder::parcel::Deserialize for UnionInUnion {
deserialize(parcel: &binder::parcel::Parcel) -> binder::Result<Self>39   fn deserialize(parcel: &binder::parcel::Parcel) -> binder::Result<Self> {
40     <Self as binder::parcel::DeserializeOption>::deserialize_option(parcel)
41        .transpose()
42        .unwrap_or(Err(binder::StatusCode::UNEXPECTED_NULL))
43   }
44 }
45 impl binder::parcel::DeserializeArray for UnionInUnion {}
46 impl binder::parcel::DeserializeOption for UnionInUnion {
deserialize_option(parcel: &binder::parcel::Parcel) -> binder::Result<Option<Self>>47   fn deserialize_option(parcel: &binder::parcel::Parcel) -> binder::Result<Option<Self>> {
48     let status: i32 = parcel.read()?;
49     if status == 0 { return Ok(None); }
50     let tag: i32 = parcel.read()?;
51     match tag {
52       0 => {
53         let value: crate::mangled::_7_android_4_aidl_5_tests_6_unions_9_EnumUnion = parcel.read()?;
54         Ok(Some(Self::First(value)))
55       }
56       1 => {
57         let value: i32 = parcel.read()?;
58         Ok(Some(Self::Second(value)))
59       }
60       _ => {
61         Err(binder::StatusCode::BAD_VALUE)
62       }
63     }
64   }
65 }
66