Macro altbitflags::flag_rw
[−]
[src]
macro_rules! flag_rw { ($name:ident, $set_name:ident, $pos:expr) => { ... }; ($name:ident, $set_name:ident, $full_name:ident, $full_set_name:ident, $pos:expr) => { ... }; }
Create read-write flag.
It accepts an name argument, optional full name argument and a number, which indicates the bit number with required flag.
Later, the given flag can be accessed either by short or full name like with a normal function.
It will work only if it's put in a structure implementation where integer number with fields can be accessed with 'self.0'.
Currently, 'self.0' must be of type 'i64'.
Example
#[macro_use] extern crate altbitflags; struct Something(i64); impl Something { flag_rw!(present, set_present, 0); flag_rw!(e, set_e, extended, set_extended, 1); // It is okay to define different functions for a single bit: flag_rw!(a, set_a, 2); flag_rw!(b, set_b, 2); } fn main() { let mut something = Something(0); if (something.present()) { /* ... */ } if (something.e()) { /* ... */ } // These do the same thing: something.set_e(true); something.set_extended(true); }