use crate::std::*;
use crate::ByteOrder;
#[derive(Debug, Clone)]
pub enum ModifierValue {
Bool(bool),
Usize(usize),
String(String),
Vecu8(Vec<u8>),
}
#[derive(Debug, Default, Clone)]
pub struct ContainerAttrModifiers {
pub byteorder: Option<ByteOrder>,
pub expr: Option<String>,
pub variable_name: RefCell<BTreeMap<String, usize>>,
}
#[derive(Debug, Default, Clone)]
pub struct FieldAttrModifiers<'a> {
pub offset: Option<usize>,
pub length: Option<usize>,
pub count: Option<usize>,
pub try_count: Option<usize>,
pub byteorder: Option<ByteOrder>,
pub untake: bool,
pub linend: bool,
pub linend_value: Option<&'a [u8]>,
pub bits: Option<usize>,
pub bits_start: bool,
pub byte_count: Option<usize>,
pub key: Option<&'a [u8]>,
pub split: Option<&'a [u8]>,
pub branch: Option<usize>,
pub expr: Option<String>,
}
#[inline]
pub fn get_byteorder(cattr: Option<&crate::ContainerAttrModifiers>, fattr: Option<&crate::FieldAttrModifiers>) -> crate::ByteOrder {
if let Some(value) = fattr {
if let Some(byteorder) = value.byteorder {
return byteorder;
}
}
if let Some(value) = cattr {
if let Some(byteorder) = value.byteorder {
return byteorder;
}
}
crate::ByteOrder::Be
}