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);
}