blob: 72bc99838f9902bef87c7ca2cd02715679d542be [file] [log] [blame]
#[derive(Debug, Clone, PartialEq)]
pub struct StructuredParcelable {
pub shouldContainThreeFs: Vec<i32>,
pub f: i32,
pub shouldBeJerry: String,
pub shouldBeByteBar: crate::mangled::_7_android_4_aidl_5_tests_8_ByteEnum,
pub shouldBeIntBar: crate::mangled::_7_android_4_aidl_5_tests_7_IntEnum,
pub shouldBeLongBar: crate::mangled::_7_android_4_aidl_5_tests_8_LongEnum,
pub shouldContainTwoByteFoos: Vec<crate::mangled::_7_android_4_aidl_5_tests_8_ByteEnum>,
pub shouldContainTwoIntFoos: Vec<crate::mangled::_7_android_4_aidl_5_tests_7_IntEnum>,
pub shouldContainTwoLongFoos: Vec<crate::mangled::_7_android_4_aidl_5_tests_8_LongEnum>,
pub stringDefaultsToFoo: String,
pub byteDefaultsToFour: i8,
pub intDefaultsToFive: i32,
pub longDefaultsToNegativeSeven: i64,
pub booleanDefaultsToTrue: bool,
pub charDefaultsToC: u16,
pub floatDefaultsToPi: f32,
pub doubleWithDefault: f64,
pub arrayDefaultsTo123: Vec<i32>,
pub arrayDefaultsToEmpty: Vec<i32>,
pub boolDefault: bool,
pub byteDefault: i8,
pub intDefault: i32,
pub longDefault: i64,
pub floatDefault: f32,
pub doubleDefault: f64,
pub checkDoubleFromFloat: f64,
pub checkStringArray1: Vec<String>,
pub checkStringArray2: Vec<String>,
pub int32_min: i32,
pub int32_max: i32,
pub int64_max: i64,
pub hexInt32_neg_1: i32,
pub ibinder: Option<binder::SpIBinder>,
pub int32_1: Vec<i32>,
pub int64_1: Vec<i64>,
pub hexInt32_pos_1: i32,
pub hexInt64_pos_1: i32,
pub const_exprs_1: crate::mangled::_7_android_4_aidl_5_tests_22_ConstantExpressionEnum,
pub const_exprs_2: crate::mangled::_7_android_4_aidl_5_tests_22_ConstantExpressionEnum,
pub const_exprs_3: crate::mangled::_7_android_4_aidl_5_tests_22_ConstantExpressionEnum,
pub const_exprs_4: crate::mangled::_7_android_4_aidl_5_tests_22_ConstantExpressionEnum,
pub const_exprs_5: crate::mangled::_7_android_4_aidl_5_tests_22_ConstantExpressionEnum,
pub const_exprs_6: crate::mangled::_7_android_4_aidl_5_tests_22_ConstantExpressionEnum,
pub const_exprs_7: crate::mangled::_7_android_4_aidl_5_tests_22_ConstantExpressionEnum,
pub const_exprs_8: crate::mangled::_7_android_4_aidl_5_tests_22_ConstantExpressionEnum,
pub const_exprs_9: crate::mangled::_7_android_4_aidl_5_tests_22_ConstantExpressionEnum,
pub const_exprs_10: crate::mangled::_7_android_4_aidl_5_tests_22_ConstantExpressionEnum,
pub addString1: String,
pub addString2: String,
pub shouldSetBit0AndBit2: i32,
pub u: Option<crate::mangled::_7_android_4_aidl_5_tests_5_Union>,
pub shouldBeConstS1: Option<crate::mangled::_7_android_4_aidl_5_tests_5_Union>,
pub defaultWithFoo: crate::mangled::_7_android_4_aidl_5_tests_7_IntEnum,
}
pub const BIT0: i32 = 1;
pub const BIT1: i32 = 2;
pub const BIT2: i32 = 4;
pub(crate) mod mangled { pub use super::StructuredParcelable as _7_android_4_aidl_5_tests_20_StructuredParcelable; }
impl Default for StructuredParcelable {
fn default() -> Self {
Self {
shouldContainThreeFs: Default::default(),
f: 0,
shouldBeJerry: Default::default(),
shouldBeByteBar: Default::default(),
shouldBeIntBar: Default::default(),
shouldBeLongBar: Default::default(),
shouldContainTwoByteFoos: Default::default(),
shouldContainTwoIntFoos: Default::default(),
shouldContainTwoLongFoos: Default::default(),
stringDefaultsToFoo: "foo".into(),
byteDefaultsToFour: 4,
intDefaultsToFive: 5,
longDefaultsToNegativeSeven: -7,
booleanDefaultsToTrue: true,
charDefaultsToC: 'C' as u16,
floatDefaultsToPi: 3.140000f32,
doubleWithDefault: -314000000000000000.000000f64,
arrayDefaultsTo123: vec!{1, 2, 3},
arrayDefaultsToEmpty: vec!{},
boolDefault: false,
byteDefault: 0,
intDefault: 0,
longDefault: 0,
floatDefault: 0.000000f32,
doubleDefault: 0.000000f64,
checkDoubleFromFloat: 3.140000f64,
checkStringArray1: vec!{"a".into(), "b".into()},
checkStringArray2: vec!{"a".into(), "b".into()},
int32_min: -2147483648,
int32_max: 2147483647,
int64_max: 9223372036854775807,
hexInt32_neg_1: -1,
ibinder: Default::default(),
int32_1: vec!{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
int64_1: vec!{1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
hexInt32_pos_1: 1,
hexInt64_pos_1: 1,
const_exprs_1: Default::default(),
const_exprs_2: Default::default(),
const_exprs_3: Default::default(),
const_exprs_4: Default::default(),
const_exprs_5: Default::default(),
const_exprs_6: Default::default(),
const_exprs_7: Default::default(),
const_exprs_8: Default::default(),
const_exprs_9: Default::default(),
const_exprs_10: Default::default(),
addString1: "hello world!".into(),
addString2: "The quick brown fox jumps over the lazy dog.".into(),
shouldSetBit0AndBit2: 0,
u: Default::default(),
shouldBeConstS1: Default::default(),
defaultWithFoo: crate::mangled::_7_android_4_aidl_5_tests_7_IntEnum::FOO,
}
}
}
impl binder::parcel::Serialize for StructuredParcelable {
fn serialize(&self, parcel: &mut binder::parcel::Parcel) -> binder::Result<()> {
<Self as binder::parcel::SerializeOption>::serialize_option(Some(self), parcel)
}
}
impl binder::parcel::SerializeArray for StructuredParcelable {}
impl binder::parcel::SerializeOption for StructuredParcelable {
fn serialize_option(this: Option<&Self>, parcel: &mut binder::parcel::Parcel) -> binder::Result<()> {
let this = if let Some(this) = this {
parcel.write(&1i32)?;
this
} else {
return parcel.write(&0i32);
};
parcel.sized_write(|subparcel| {
subparcel.write(&this.shouldContainThreeFs)?;
subparcel.write(&this.f)?;
subparcel.write(&this.shouldBeJerry)?;
subparcel.write(&this.shouldBeByteBar)?;
subparcel.write(&this.shouldBeIntBar)?;
subparcel.write(&this.shouldBeLongBar)?;
subparcel.write(&this.shouldContainTwoByteFoos)?;
subparcel.write(&this.shouldContainTwoIntFoos)?;
subparcel.write(&this.shouldContainTwoLongFoos)?;
subparcel.write(&this.stringDefaultsToFoo)?;
subparcel.write(&this.byteDefaultsToFour)?;
subparcel.write(&this.intDefaultsToFive)?;
subparcel.write(&this.longDefaultsToNegativeSeven)?;
subparcel.write(&this.booleanDefaultsToTrue)?;
subparcel.write(&this.charDefaultsToC)?;
subparcel.write(&this.floatDefaultsToPi)?;
subparcel.write(&this.doubleWithDefault)?;
subparcel.write(&this.arrayDefaultsTo123)?;
subparcel.write(&this.arrayDefaultsToEmpty)?;
subparcel.write(&this.boolDefault)?;
subparcel.write(&this.byteDefault)?;
subparcel.write(&this.intDefault)?;
subparcel.write(&this.longDefault)?;
subparcel.write(&this.floatDefault)?;
subparcel.write(&this.doubleDefault)?;
subparcel.write(&this.checkDoubleFromFloat)?;
subparcel.write(&this.checkStringArray1)?;
subparcel.write(&this.checkStringArray2)?;
subparcel.write(&this.int32_min)?;
subparcel.write(&this.int32_max)?;
subparcel.write(&this.int64_max)?;
subparcel.write(&this.hexInt32_neg_1)?;
subparcel.write(&this.ibinder)?;
subparcel.write(&this.int32_1)?;
subparcel.write(&this.int64_1)?;
subparcel.write(&this.hexInt32_pos_1)?;
subparcel.write(&this.hexInt64_pos_1)?;
subparcel.write(&this.const_exprs_1)?;
subparcel.write(&this.const_exprs_2)?;
subparcel.write(&this.const_exprs_3)?;
subparcel.write(&this.const_exprs_4)?;
subparcel.write(&this.const_exprs_5)?;
subparcel.write(&this.const_exprs_6)?;
subparcel.write(&this.const_exprs_7)?;
subparcel.write(&this.const_exprs_8)?;
subparcel.write(&this.const_exprs_9)?;
subparcel.write(&this.const_exprs_10)?;
subparcel.write(&this.addString1)?;
subparcel.write(&this.addString2)?;
subparcel.write(&this.shouldSetBit0AndBit2)?;
subparcel.write(&this.u)?;
subparcel.write(&this.shouldBeConstS1)?;
subparcel.write(&this.defaultWithFoo)?;
Ok(())
})
}
}
impl binder::parcel::Deserialize for StructuredParcelable {
fn deserialize(parcel: &binder::parcel::Parcel) -> binder::Result<Self> {
<Self as binder::parcel::DeserializeOption>::deserialize_option(parcel)
.transpose()
.unwrap_or(Err(binder::StatusCode::UNEXPECTED_NULL))
}
}
impl binder::parcel::DeserializeArray for StructuredParcelable {}
impl binder::parcel::DeserializeOption for StructuredParcelable {
fn deserialize_option(parcel: &binder::parcel::Parcel) -> binder::Result<Option<Self>> {
let status: i32 = parcel.read()?;
if status == 0 { return Ok(None); }
let start_pos = parcel.get_data_position();
let parcelable_size: i32 = parcel.read()?;
if parcelable_size < 0 { return Err(binder::StatusCode::BAD_VALUE); }
if start_pos.checked_add(parcelable_size).is_none() {
return Err(binder::StatusCode::BAD_VALUE);
}
let mut result = Self::default();
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.shouldContainThreeFs = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.f = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.shouldBeJerry = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.shouldBeByteBar = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.shouldBeIntBar = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.shouldBeLongBar = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.shouldContainTwoByteFoos = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.shouldContainTwoIntFoos = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.shouldContainTwoLongFoos = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.stringDefaultsToFoo = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.byteDefaultsToFour = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.intDefaultsToFive = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.longDefaultsToNegativeSeven = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.booleanDefaultsToTrue = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.charDefaultsToC = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.floatDefaultsToPi = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.doubleWithDefault = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.arrayDefaultsTo123 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.arrayDefaultsToEmpty = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.boolDefault = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.byteDefault = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.intDefault = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.longDefault = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.floatDefault = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.doubleDefault = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.checkDoubleFromFloat = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.checkStringArray1 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.checkStringArray2 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.int32_min = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.int32_max = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.int64_max = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.hexInt32_neg_1 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.ibinder = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.int32_1 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.int64_1 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.hexInt32_pos_1 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.hexInt64_pos_1 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.const_exprs_1 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.const_exprs_2 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.const_exprs_3 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.const_exprs_4 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.const_exprs_5 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.const_exprs_6 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.const_exprs_7 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.const_exprs_8 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.const_exprs_9 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.const_exprs_10 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.addString1 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.addString2 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.shouldSetBit0AndBit2 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.u = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.shouldBeConstS1 = parcel.read()?;
if (parcel.get_data_position() - start_pos) == parcelable_size {
return Ok(Some(result));
}
result.defaultWithFoo = parcel.read()?;
unsafe {
parcel.set_data_position(start_pos + parcelable_size)?;
}
Ok(Some(result))
}
}