diff options
Diffstat (limited to 'examples/11-transient-0/output/rust/src/gen')
3 files changed, 383 insertions, 0 deletions
diff --git a/examples/11-transient-0/output/rust/src/gen/data.rs b/examples/11-transient-0/output/rust/src/gen/data.rs new file mode 100644 index 0000000..0ea6c0f --- /dev/null +++ b/examples/11-transient-0/output/rust/src/gen/data.rs @@ -0,0 +1,90 @@ +// Generated by hobgoblin. + +#[derive(Debug, PartialEq)] +pub struct StructWithBool { + pub a: ::core::primitive::bool, + pub b: ::core::primitive::bool, +} + +#[derive(Debug, PartialEq)] +pub struct StructWithInt32 { + pub a: ::core::primitive::i32, + pub b: ::core::primitive::i32, +} + +#[derive(Debug, PartialEq)] +pub struct StructWithInt64 { + pub a: ::core::primitive::i64, + pub b: ::core::primitive::i64, +} + +#[derive(Debug, PartialEq)] +pub struct StructWithString { + pub a: ::std::string::String, + pub b: ::std::string::String, +} + +#[derive(Debug, PartialEq)] +pub struct StructWithStruct { + pub inner: crate::data::StructWithInt32, + pub c: ::core::primitive::i32, +} + +#[derive(Debug, PartialEq)] +pub struct StructWithList { + pub a: ::std::vec::Vec::<::core::primitive::i64>, + pub b: ::std::vec::Vec::<crate::data::StructWithInt32>, +} + +#[derive(Debug, PartialEq)] +pub struct StructWithOption { + pub a: ::std::option::Option::<::core::primitive::i64>, + pub b: ::std::option::Option::<crate::data::StructWithInt32>, +} + +#[derive(Debug, PartialEq)] +pub enum EnumWithVariants { + Zero, + One, + Two, +} + +#[derive(Debug, PartialEq)] +pub struct StructWithEnum { + pub inner: crate::data::EnumWithVariants, + pub c: ::core::primitive::i32, +} + +#[derive(Debug, PartialEq)] +pub enum SumWithVariants { + VariantOne(crate::data::VariantOne), + VariantTwo(crate::data::VariantTwo), +} + +impl ::std::convert::From::<crate::data::VariantOne> for crate::data::SumWithVariants { + fn from(value: crate::data::VariantOne) -> Self { + Self::VariantOne(value) + } +} + +impl ::std::convert::From::<crate::data::VariantTwo> for crate::data::SumWithVariants { + fn from(value: crate::data::VariantTwo) -> Self { + Self::VariantTwo(value) + } +} + +#[derive(Debug, PartialEq)] +pub struct VariantOne { + pub a: ::core::primitive::i32, +} + +#[derive(Debug, PartialEq)] +pub struct VariantTwo { + pub a: ::core::primitive::i64, +} + +#[derive(Debug, PartialEq)] +pub struct StructWithSum { + pub inner: crate::data::SumWithVariants, + pub b: ::core::primitive::i32, +} diff --git a/examples/11-transient-0/output/rust/src/gen/data/transient_0.rs b/examples/11-transient-0/output/rust/src/gen/data/transient_0.rs new file mode 100644 index 0000000..82fb5f7 --- /dev/null +++ b/examples/11-transient-0/output/rust/src/gen/data/transient_0.rs @@ -0,0 +1,223 @@ +// Generated by hobgoblin. + +pub fn encode_struct_with_bool(value: &crate::data::StructWithBool, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { + crate::transient_0::encode_bool(&value.a, writer)?; + crate::transient_0::encode_bool(&value.b, writer)?; + ::std::io::Result::Ok(()) +} + +pub fn decode_struct_with_bool(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithBool> { + let a = crate::transient_0::decode_bool(reader)?; + let b = crate::transient_0::decode_bool(reader)?; + std::io::Result::Ok(crate::data::StructWithBool { a: a, b: b }) +} + +pub fn encode_struct_with_int_32(value: &crate::data::StructWithInt32, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { + crate::transient_0::encode_int_32(&value.a, writer)?; + crate::transient_0::encode_int_32(&value.b, writer)?; + ::std::io::Result::Ok(()) +} + +pub fn decode_struct_with_int_32(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithInt32> { + let a = crate::transient_0::decode_int_32(reader)?; + let b = crate::transient_0::decode_int_32(reader)?; + std::io::Result::Ok(crate::data::StructWithInt32 { a: a, b: b }) +} + +pub fn encode_struct_with_int_64(value: &crate::data::StructWithInt64, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { + crate::transient_0::encode_int_64(&value.a, writer)?; + crate::transient_0::encode_int_64(&value.b, writer)?; + ::std::io::Result::Ok(()) +} + +pub fn decode_struct_with_int_64(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithInt64> { + let a = crate::transient_0::decode_int_64(reader)?; + let b = crate::transient_0::decode_int_64(reader)?; + std::io::Result::Ok(crate::data::StructWithInt64 { a: a, b: b }) +} + +pub fn encode_struct_with_string(value: &crate::data::StructWithString, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { + crate::transient_0::encode_string(&value.a, writer)?; + crate::transient_0::encode_string(&value.b, writer)?; + ::std::io::Result::Ok(()) +} + +pub fn decode_struct_with_string(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithString> { + let a = crate::transient_0::decode_string(reader)?; + let b = crate::transient_0::decode_string(reader)?; + std::io::Result::Ok(crate::data::StructWithString { a: a, b: b }) +} + +pub fn encode_struct_with_struct(value: &crate::data::StructWithStruct, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { + crate::data::transient_0::encode_struct_with_int_32(&value.inner, writer)?; + crate::transient_0::encode_int_32(&value.c, writer)?; + ::std::io::Result::Ok(()) +} + +pub fn decode_struct_with_struct(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithStruct> { + let inner = crate::data::transient_0::decode_struct_with_int_32(reader)?; + let c = crate::transient_0::decode_int_32(reader)?; + std::io::Result::Ok(crate::data::StructWithStruct { inner: inner, c: c }) +} + +pub fn encode_struct_with_list(value: &crate::data::StructWithList, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { + { + crate::transient_0::encode_int_64(&(((&value.a).len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?, writer)?; + for element in &value.a { + crate::transient_0::encode_int_64(element, writer)?; + }; + }; + { + crate::transient_0::encode_int_64(&(((&value.b).len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?, writer)?; + for element in &value.b { + crate::data::transient_0::encode_struct_with_int_32(element, writer)?; + }; + }; + ::std::io::Result::Ok(()) +} + +pub fn decode_struct_with_list(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithList> { + let a = { + let len = crate::transient_0::decode_int_64(reader)?; + let mut elements = ::std::vec::Vec::with_capacity((len.try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?); + for _ in 0..len { + elements.push(crate::transient_0::decode_int_64(reader)?); + }; + elements + }; + let b = { + let len = crate::transient_0::decode_int_64(reader)?; + let mut elements = ::std::vec::Vec::with_capacity((len.try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?); + for _ in 0..len { + elements.push(crate::data::transient_0::decode_struct_with_int_32(reader)?); + }; + elements + }; + std::io::Result::Ok(crate::data::StructWithList { a: a, b: b }) +} + +pub fn encode_struct_with_option(value: &crate::data::StructWithOption, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { + match &value.a { + ::std::option::Option::Some(value) => { + crate::transient_0::encode_bool(&true, writer)?; + crate::transient_0::encode_int_64(&value, writer)?; + }, + ::std::option::Option::None => { + crate::transient_0::encode_bool(&false, writer)?; + }, + }; + match &value.b { + ::std::option::Option::Some(value) => { + crate::transient_0::encode_bool(&true, writer)?; + crate::data::transient_0::encode_struct_with_int_32(&value, writer)?; + }, + ::std::option::Option::None => { + crate::transient_0::encode_bool(&false, writer)?; + }, + }; + ::std::io::Result::Ok(()) +} + +pub fn decode_struct_with_option(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithOption> { + let a = { + let is_some = crate::transient_0::decode_bool(reader)?; + if is_some { + ::std::option::Option::Some(crate::transient_0::decode_int_64(reader)?) + } else { + ::std::option::Option::None + } + }; + let b = { + let is_some = crate::transient_0::decode_bool(reader)?; + if is_some { + ::std::option::Option::Some(crate::data::transient_0::decode_struct_with_int_32(reader)?) + } else { + ::std::option::Option::None + } + }; + std::io::Result::Ok(crate::data::StructWithOption { a: a, b: b }) +} + +pub fn encode_enum_with_variants(value: &crate::data::EnumWithVariants, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { + crate::transient_0::encode_int_32(&match value { + crate::data::EnumWithVariants::Zero => 0, + crate::data::EnumWithVariants::One => 1, + crate::data::EnumWithVariants::Two => 2, + }, writer)?; + ::std::io::Result::Ok(()) +} + +pub fn decode_enum_with_variants(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::EnumWithVariants> { + std::io::Result::Ok(match &crate::transient_0::decode_int_32(reader)? { + 0 => crate::data::EnumWithVariants::Zero, + 1 => crate::data::EnumWithVariants::One, + 2 => crate::data::EnumWithVariants::Two, + _ => todo!(), + }) +} + +pub fn encode_struct_with_enum(value: &crate::data::StructWithEnum, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { + crate::data::transient_0::encode_enum_with_variants(&value.inner, writer)?; + crate::transient_0::encode_int_32(&value.c, writer)?; + ::std::io::Result::Ok(()) +} + +pub fn decode_struct_with_enum(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithEnum> { + let inner = crate::data::transient_0::decode_enum_with_variants(reader)?; + let c = crate::transient_0::decode_int_32(reader)?; + std::io::Result::Ok(crate::data::StructWithEnum { inner: inner, c: c }) +} + +pub fn encode_sum_with_variants(value: &crate::data::SumWithVariants, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { + match value { + crate::data::SumWithVariants::VariantOne(value) => { + crate::transient_0::encode_int_32(&0, writer)?; + crate::data::transient_0::encode_variant_one(value, writer)?; + }, + crate::data::SumWithVariants::VariantTwo(value) => { + crate::transient_0::encode_int_32(&1, writer)?; + crate::data::transient_0::encode_variant_two(value, writer)?; + }, + }; + ::std::io::Result::Ok(()) +} + +pub fn decode_sum_with_variants(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::SumWithVariants> { + std::io::Result::Ok(match &crate::transient_0::decode_int_32(reader)? { + 0 => crate::data::SumWithVariants::VariantOne(crate::data::transient_0::decode_variant_one(reader)?), + 1 => crate::data::SumWithVariants::VariantTwo(crate::data::transient_0::decode_variant_two(reader)?), + _ => todo!(), + }) +} + +pub fn encode_variant_one(value: &crate::data::VariantOne, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { + crate::transient_0::encode_int_32(&value.a, writer)?; + ::std::io::Result::Ok(()) +} + +pub fn decode_variant_one(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::VariantOne> { + let a = crate::transient_0::decode_int_32(reader)?; + std::io::Result::Ok(crate::data::VariantOne { a: a }) +} + +pub fn encode_variant_two(value: &crate::data::VariantTwo, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { + crate::transient_0::encode_int_64(&value.a, writer)?; + ::std::io::Result::Ok(()) +} + +pub fn decode_variant_two(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::VariantTwo> { + let a = crate::transient_0::decode_int_64(reader)?; + std::io::Result::Ok(crate::data::VariantTwo { a: a }) +} + +pub fn encode_struct_with_sum(value: &crate::data::StructWithSum, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { + crate::data::transient_0::encode_sum_with_variants(&value.inner, writer)?; + crate::transient_0::encode_int_32(&value.b, writer)?; + ::std::io::Result::Ok(()) +} + +pub fn decode_struct_with_sum(reader: &mut impl std::io::Read) -> ::std::io::Result::<crate::data::StructWithSum> { + let inner = crate::data::transient_0::decode_sum_with_variants(reader)?; + let b = crate::transient_0::decode_int_32(reader)?; + std::io::Result::Ok(crate::data::StructWithSum { inner: inner, b: b }) +} diff --git a/examples/11-transient-0/output/rust/src/gen/transient_0.rs b/examples/11-transient-0/output/rust/src/gen/transient_0.rs new file mode 100644 index 0000000..560fe51 --- /dev/null +++ b/examples/11-transient-0/output/rust/src/gen/transient_0.rs @@ -0,0 +1,70 @@ +// Generated by hobgoblin. + +pub fn encode_bool(value: &::core::primitive::bool, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { + if *value { + writer.write_all(&1u8.to_le_bytes())?; + } else { + writer.write_all(&0u8.to_le_bytes())?; + }; + ::std::io::Result::Ok(()) +} + +pub fn decode_bool(reader: &mut impl std::io::Read) -> ::std::io::Result::<::core::primitive::bool> { + let int_value = { + let bytes = { + let mut bytes = [0; 1]; + reader.read_exact(&mut bytes)?; + bytes + }; + u8::from_le_bytes(bytes) + }; + std::io::Result::Ok(if int_value == 0 { + false + } else { + true + }) +} + +pub fn encode_int_32(value: &::core::primitive::i32, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { + writer.write_all(&value.to_le_bytes())?; + ::std::io::Result::Ok(()) +} + +pub fn decode_int_32(reader: &mut impl std::io::Read) -> ::std::io::Result::<::core::primitive::i32> { + let bytes = { + let mut bytes = [0; 4]; + reader.read_exact(&mut bytes)?; + bytes + }; + std::io::Result::Ok(::core::primitive::i32::from_le_bytes(bytes)) +} + +pub fn encode_int_64(value: &::core::primitive::i64, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { + writer.write_all(&value.to_le_bytes())?; + ::std::io::Result::Ok(()) +} + +pub fn decode_int_64(reader: &mut impl std::io::Read) -> ::std::io::Result::<::core::primitive::i64> { + let bytes = { + let mut bytes = [0; 8]; + reader.read_exact(&mut bytes)?; + bytes + }; + std::io::Result::Ok(::core::primitive::i64::from_le_bytes(bytes)) +} + +pub fn encode_string(value: &::std::string::String, writer: &mut impl std::io::Write) -> ::std::io::Result::<()> { + crate::transient_0::encode_int_64(&((value.len()).try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?, writer)?; + writer.write_all(value.as_bytes())?; + ::std::io::Result::Ok(()) +} + +pub fn decode_string(reader: &mut impl std::io::Read) -> ::std::io::Result::<::std::string::String> { + let len = crate::transient_0::decode_int_64(reader)?; + let bytes = { + let mut bytes = vec![0u8; (len.try_into()).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?]; + reader.read_exact(&mut bytes)?; + bytes + }; + std::io::Result::Ok((::std::string::String::from_utf8(bytes)).map_err(|error| ::std::io::Error::new(::std::io::ErrorKind::InvalidData, error))?) +} |
