Skip to content
Permalink
Browse files

libstd: Inline more methods on bitflags.

Servo really wants this.
  • Loading branch information
pcwalton committed Oct 16, 2014
1 parent 9d5fa7a commit 416e6ecf8c392a0346b0a46bc5712e4371602922
Showing with 11 additions and 0 deletions.
  1. +11 −0 src/libstd/bitflags.rs
@@ -127,22 +127,26 @@ macro_rules! bitflags {

impl $BitFlags {
/// Returns an empty set of flags.
#[inline]
pub fn empty() -> $BitFlags {
$BitFlags { bits: 0 }
}

/// Returns the set containing all flags.
#[inline]
pub fn all() -> $BitFlags {
$BitFlags { bits: $($value)|+ }
}

/// Returns the raw value of the flags currently stored.
#[inline]
pub fn bits(&self) -> $T {
self.bits
}

/// Convert from underlying bit representation, unless that
/// representation contains bits that do not correspond to a flag.
#[inline]
pub fn from_bits(bits: $T) -> ::std::option::Option<$BitFlags> {
if (bits & !$BitFlags::all().bits()) != 0 {
::std::option::None
@@ -153,21 +157,25 @@ macro_rules! bitflags {

/// Convert from underlying bit representation, dropping any bits
/// that do not correspond to flags.
#[inline]
pub fn from_bits_truncate(bits: $T) -> $BitFlags {
$BitFlags { bits: bits } & $BitFlags::all()
}

/// Returns `true` if no flags are currently stored.
#[inline]
pub fn is_empty(&self) -> bool {
*self == $BitFlags::empty()
}

/// Returns `true` if all flags are currently set.
#[inline]
pub fn is_all(&self) -> bool {
*self == $BitFlags::all()
}

/// Returns `true` if there are flags common to both `self` and `other`.
#[inline]
pub fn intersects(&self, other: $BitFlags) -> bool {
!(self & other).is_empty()
}
@@ -179,16 +187,19 @@ macro_rules! bitflags {
}

/// Inserts the specified flags in-place.
#[inline]
pub fn insert(&mut self, other: $BitFlags) {
self.bits |= other.bits;
}

/// Removes the specified flags in-place.
#[inline]
pub fn remove(&mut self, other: $BitFlags) {
self.bits &= !other.bits;
}

/// Toggles the specified flags in-place.
#[inline]
pub fn toggle(&mut self, other: $BitFlags) {
self.bits ^= other.bits;
}

5 comments on commit 416e6ec

@bors

This comment has been minimized.

Copy link
Contributor

@bors bors replied Oct 18, 2014

saw approval from thestinger
at pcwalton@416e6ec

@bors

This comment has been minimized.

Copy link
Contributor

@bors bors replied Oct 18, 2014

merging pcwalton/rust/bitflags-inline = 416e6ec into auto

@bors

This comment has been minimized.

Copy link
Contributor

@bors bors replied Oct 18, 2014

pcwalton/rust/bitflags-inline = 416e6ec merged ok, testing candidate = c7c342d

@bors

This comment has been minimized.

Copy link
Contributor

@bors bors replied Oct 18, 2014

fast-forwarding master to auto = c7c342d

Please sign in to comment.
You can’t perform that action at this time.