/// # Example
///
/// ~~~rust
-/// bitflags!(
+/// bitflags! {
/// flags Flags: u32 {
/// static FlagA = 0x00000001,
/// static FlagB = 0x00000010,
/// | FlagB.bits
/// | FlagC.bits,
/// }
-/// )
+/// }
///
/// fn main() {
/// let e1 = FlagA | FlagC;
/// ~~~rust
/// use std::fmt;
///
-/// bitflags!(
+/// bitflags! {
/// flags Flags: u32 {
/// static FlagA = 0x00000001,
/// static FlagB = 0x00000010,
/// }
-/// )
+/// }
///
/// impl Flags {
/// pub fn clear(&mut self) {
/// - `insert`: inserts the specified flags in-place
/// - `remove`: removes the specified flags in-place
#[macro_export]
-macro_rules! bitflags(
+macro_rules! bitflags {
($(#[$attr:meta])* flags $BitFlags:ident: $T:ty {
$($(#[$Flag_attr:meta])* static $Flag:ident = $value:expr),+
- }) => (
+ }) => {
#[deriving(PartialEq, Eq, Clone, PartialOrd, Ord, Hash)]
$(#[$attr])*
pub struct $BitFlags {
$BitFlags { bits: !self.bits } & $BitFlags::all()
}
}
- );
+ };
($(#[$attr:meta])* flags $BitFlags:ident: $T:ty {
$($(#[$Flag_attr:meta])* static $Flag:ident = $value:expr),+,
- }) => (
- bitflags!(
+ }) => {
+ bitflags! {
$(#[$attr])*
flags $BitFlags: u32 {
$($(#[$Flag_attr])* static $Flag = $value),+
}
- )
- );
-)
+ }
+ };
+}
#[cfg(test)]
mod tests {
use option::{Some, None};
use ops::{BitOr, BitAnd, Sub, Not};
- bitflags!(
+ bitflags! {
#[doc = "> The first principle is that you must not fool yourself — and"]
#[doc = "> you are the easiest person to fool."]
#[doc = "> "]
| FlagB.bits
| FlagC.bits,
}
- )
+ }
#[test]
fn test_bits(){
pub gen: u64,
}
-bitflags!(
- #[doc="A set of permissions for a file or directory is represented
-by a set of flags which are or'd together."]
+bitflags! {
+ #[doc = "A set of permissions for a file or directory is represented"]
+ #[doc = "by a set of flags which are or'd together."]
flags FilePermission: u32 {
static UserRead = 0o400,
static UserWrite = 0o200,
static GroupRWX = GroupRead.bits | GroupWrite.bits | GroupExecute.bits,
static OtherRWX = OtherRead.bits | OtherWrite.bits | OtherExecute.bits,
- #[doc="Permissions for user owned files, equivalent to 0644 on
-unix-like systems."]
+ #[doc = "Permissions for user owned files, equivalent to 0644 on"]
+ #[doc = "unix-like systems."]
static UserFile = UserRead.bits | UserWrite.bits | GroupRead.bits | OtherRead.bits,
- #[doc="Permissions for user owned directories, equivalent to 0755 on
-unix-like systems."]
+ #[doc = "Permissions for user owned directories, equivalent to 0755 on"]
+ #[doc = "unix-like systems."]
static UserDir = UserRWX.bits | GroupRead.bits | GroupExecute.bits |
OtherRead.bits | OtherExecute.bits,
- #[doc="Permissions for user owned executables, equivalent to 0755
-on unix-like systems."]
+ #[doc = "Permissions for user owned executables, equivalent to 0755"]
+ #[doc = "on unix-like systems."]
static UserExec = UserDir.bits,
- #[doc="All possible permissions enabled."]
- static AllPermissions = UserRWX.bits | GroupRWX.bits | OtherRWX.bits
+ #[doc = "All possible permissions enabled."]
+ static AllPermissions = UserRWX.bits | GroupRWX.bits | OtherRWX.bits,
}
-)
+}
impl Default for FilePermission {
#[inline]
pub use fmt; // used for any formatting strings
pub use io; // used for println!()
pub use local_data; // used for local_data_key!()
- pub use option; // used for bitflags!()
+ pub use option; // used for bitflags!{}
pub use rt; // used for fail!()
pub use vec; // used for vec![]