nros_std_msgs/msg/
multi_array_layout.rs1use nros_core::{Deserialize, RosMessage, Serialize};
6use nros_serdes::{CdrReader, CdrWriter, DeserError, SerError};
7
8#[derive(Debug, Clone, Default, PartialEq)]
10pub struct MultiArrayLayout {
11 pub dim: heapless::Vec<crate::msg::MultiArrayDimension, 64>,
12 pub data_offset: u32,
13}
14
15impl Serialize for MultiArrayLayout {
16 fn serialize(&self, writer: &mut CdrWriter) -> Result<(), SerError> {
17 let __dh = writer.begin_dheader()?;
20 writer.write_u32(self.dim.len() as u32)?;
21 for item in &self.dim {
22 item.serialize(writer)?;
23 }
24 writer.write_u32(self.data_offset)?;
25 writer.end_dheader(__dh)?;
26 Ok(())
27 }
28}
29
30impl Deserialize for MultiArrayLayout {
31 fn deserialize(reader: &mut CdrReader) -> Result<Self, DeserError> {
32 let __dh = reader.begin_dheader()?;
35 let __value = Self {
36 dim: {
37 let len = reader.read_u32()? as usize;
38 let mut vec = heapless::Vec::new();
39 for _ in 0..len {
40 vec.push(Deserialize::deserialize(reader)?)
41 .map_err(|_| DeserError::CapacityExceeded)?;
42 }
43 vec
44 },
45 data_offset: reader.read_u32()?,
46 };
47 reader.end_dheader(__dh)?;
48 Ok(__value)
49 }
50}
51
52impl RosMessage for MultiArrayLayout {
53 const TYPE_NAME: &'static str = "std_msgs::msg::dds_::MultiArrayLayout_";
54 const TYPE_HASH: &'static str = "TypeHashNotSupported";
55 const MAX_SERIALIZED_BOUND: Option<usize> = ::nros_serdes::size::max_serialized_bound::<Self>();
59}
60
61#[allow(non_upper_case_globals)]
66pub const NESTED_DIM: ::nros_serdes::NestedType = ::nros_serdes::NestedType {
67 type_name: <crate::msg::MultiArrayDimension as ::nros_serdes::Message>::TYPE_NAME,
68 fields: <crate::msg::MultiArrayDimension as ::nros_serdes::Message>::FIELDS,
69};
70#[allow(non_upper_case_globals)]
71pub const FT_DIM_ELEM: ::nros_serdes::FieldType = ::nros_serdes::FieldType::Nested(&NESTED_DIM);
72impl ::nros_serdes::Message for MultiArrayLayout {
73 const TYPE_NAME: &'static str = "std_msgs/msg/MultiArrayLayout";
74 const FIELDS: &'static [::nros_serdes::Field] = &[
75 ::nros_serdes::Field {
76 name: "dim",
77 ty: ::nros_serdes::FieldType::Sequence(&FT_DIM_ELEM),
78 offset: ::core::mem::offset_of!(MultiArrayLayout, dim),
79 },
80 ::nros_serdes::Field {
81 name: "data_offset",
82 ty: ::nros_serdes::FieldType::Uint32,
83 offset: ::core::mem::offset_of!(MultiArrayLayout, data_offset),
84 },
85 ];
86}