use crate::string::SmartString;
use crate::{Dictionary, LayoutItem, LayoutItems};
#[derive(Clone, Debug)]
pub struct MessageData {
pub(crate) component_id: u32,
pub(crate) msg_type: SmartString,
pub(crate) name: SmartString,
pub(crate) layout_items: LayoutItems,
pub(crate) required: bool,
pub(crate) description: String,
}
#[derive(Debug)]
pub struct MessageDefinition<'a>(pub(crate) &'a Dictionary, pub(crate) &'a MessageData);
impl<'a> MessageDefinition<'a> {
pub fn name(&self) -> &str {
self.1.name.as_str()
}
pub fn msg_type(&self) -> &str {
self.1.msg_type.as_str()
}
pub fn description(&self) -> &str {
&self.1.description
}
pub fn component_id(&self) -> u32 {
self.1.component_id
}
pub fn layout(&self) -> impl Iterator<Item = LayoutItem<'_>> {
self.1
.layout_items
.iter()
.map(move |data| LayoutItem(self.0, data))
}
pub fn fixml_required(&self) -> bool {
self.1.required
}
}