about summary refs log tree commit diff
path: root/src/rustllvm/RustWrapper.cpp
diff options
context:
space:
mode:
authorBrendan Zabarauskas <bjzaba@yahoo.com.au>2014-03-22 19:38:15 +1100
committerBrendan Zabarauskas <bjzaba@yahoo.com.au>2014-04-29 18:50:31 -0700
commit8b58981871660bd83454878af50de8157ed3ea5e (patch)
treedc4c8eee4bf9f5c871263da714583d3fb02c1c75 /src/rustllvm/RustWrapper.cpp
parent33259d979742e643a5dda4889d17d59c6fcf63e4 (diff)
downloadrust-8b58981871660bd83454878af50de8157ed3ea5e.tar.gz
rust-8b58981871660bd83454878af50de8157ed3ea5e.zip
Add a bitflags! macro
The `bitflags!` macro generates a `struct` that holds a set of C-style bitmask flags. It is useful for creating typesafe wrappers for C APIs.

For example:

~~~rust
#[feature(phase)];
#[phase(syntax)] extern crate collections;

bitflags!(Flags: u32 {
    FlagA       = 0x00000001,
    FlagB       = 0x00000010,
    FlagC       = 0x00000100,
    FlagABC     = FlagA.bits
                | FlagB.bits
                | FlagC.bits
})

fn main() {
    let e1 = FlagA | FlagC;
    let e2 = FlagB | FlagC;
    assert!((e1 | e2) == FlagABC);   // union
    assert!((e1 & e2) == FlagC);     // intersection
    assert!((e1 - e2) == FlagA);     // set difference
}
~~~
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
0 files changed, 0 insertions, 0 deletions