Macro nix::macros::libc_bitflags
source · macro_rules! libc_bitflags { ( $(#[$outer:meta])* pub struct $BitFlags:ident: $T:ty { $( $(#[$inner:ident $($args:tt)*])* $Flag:ident $(as $cast:ty)*; )+ } ) => { ... }; }
Expand description
The libc_bitflags!
macro helps with a common use case of defining a public bitflags type
with values from the libc crate. It is used the same way as the bitflags!
macro, except
that only the name of the flag value has to be given.
The libc
crate must be in scope with the name libc
.
§Example
ⓘ
libc_bitflags!{
pub struct ProtFlags: libc::c_int {
PROT_NONE;
PROT_READ;
/// PROT_WRITE enables write protect
PROT_WRITE;
PROT_EXEC;
#[cfg(linux_android)]
PROT_GROWSDOWN;
#[cfg(linux_android)]
PROT_GROWSUP;
}
}
Example with casting, due to a mistake in libc. In this example, the various flags have different types, so we cast the broken ones to the right type.
ⓘ
libc_bitflags!{
pub struct SaFlags: libc::c_ulong {
SA_NOCLDSTOP as libc::c_ulong;
SA_NOCLDWAIT;
SA_NODEFER as libc::c_ulong;
SA_ONSTACK;
SA_RESETHAND as libc::c_ulong;
SA_RESTART as libc::c_ulong;
SA_SIGINFO;
}
}