Macro bitutils::bf [−][src]
macro_rules! bf { ($name:ident [$ty:ty] { $($var_name:ident: $var_low:tt : $var_hi:tt),* $(,)* }) => { ... }; }
Declare a bitfield type.
#[macro_use] extern crate bitutils; bf!(BitfieldName[u8] { field1: 0:3, // lower nibble field2: 4:6, field3: 7:7 }); let mut bf = BitfieldName::new(0); bf.field3.set(0xF); assert_eq!(bf.val, 0x80); bf.val = 0xF0; assert_eq!(bf.field1.get(), 0); assert_eq!(bf.field2.get(), 7); assert_eq!(bf.field3.get(), 1);
This declares a module BitfieldName
with the members:
pub struct Bf { pub val: T, pub field1: Field1, pub field2... }
pub fn new(val: T) -> Bf
pub fn alias(val: &'a T) -> &'a Bf
pub fn alias_mut(val: &'a mut T) -> &'a mut Bf
Each field has the impl:
pub fn get(&self) -> T
pub fn set(&mut self, val: T)
pub fn update(&mut self, func: FnOnce(T) -> T)