use crate::format::messages::datatype::{ByteOrder, CompoundField, DatatypeClass, DatatypeMessage};
#[derive(Debug, Clone)]
pub struct Datatype {
msg: DatatypeMessage,
}
impl Datatype {
pub(crate) fn from_message(msg: DatatypeMessage) -> Self {
Self { msg }
}
pub fn size(&self) -> usize {
self.msg.size as usize
}
pub fn class(&self) -> DatatypeClass {
self.msg.class
}
pub fn byte_order(&self) -> Option<ByteOrder> {
self.msg.byte_order()
}
pub fn is_signed(&self) -> Option<bool> {
self.msg.is_signed()
}
pub fn is_float(&self) -> bool {
self.msg.class == DatatypeClass::FloatingPoint
}
pub fn is_integer(&self) -> bool {
self.msg.class == DatatypeClass::FixedPoint
}
pub fn is_string(&self) -> bool {
self.msg.class == DatatypeClass::String
}
pub fn is_compound(&self) -> bool {
self.msg.class == DatatypeClass::Compound
}
pub fn is_enum(&self) -> bool {
self.msg.class == DatatypeClass::Enum
}
pub fn is_vlen(&self) -> bool {
self.msg.class == DatatypeClass::VarLen
}
pub fn compound_fields(&self) -> Option<Vec<CompoundField>> {
self.msg.compound_fields()
}
pub fn compound_nmembers(&self) -> Option<u16> {
self.msg.compound_nmembers()
}
pub fn enum_members(&self) -> Option<Vec<(String, u64)>> {
self.msg.enum_members()
}
}