From a6c28d2cfb7536f27bd5704a8c00e2336c24f260 Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Fri, 2 Aug 2013 07:07:51 -0700 Subject: [PATCH] std: add a twos-complement fn back to ints and uints We lost int::compl back in 1aae28. This patch brings it back by adding a `compl` method to std::num::Bitwise. --- src/libstd/num/int_macros.rs | 5 ++++- src/libstd/num/num.rs | 5 ++++- src/libstd/num/uint_macros.rs | 5 ++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/libstd/num/int_macros.rs b/src/libstd/num/int_macros.rs index 9aa79090425f8..b49c8be4e4ee6 100644 --- a/src/libstd/num/int_macros.rs +++ b/src/libstd/num/int_macros.rs @@ -419,7 +419,10 @@ impl Integer for $T { fn is_odd(&self) -> bool { !self.is_even() } } -impl Bitwise for $T {} +impl Bitwise for $T { + #[inline] + fn compl(&self) -> $T { -1 as $T ^ *self } +} #[cfg(not(test))] impl BitOr<$T,$T> for $T { diff --git a/src/libstd/num/num.rs b/src/libstd/num/num.rs index 8b61a8a8734b9..cb73310ea489f 100644 --- a/src/libstd/num/num.rs +++ b/src/libstd/num/num.rs @@ -244,7 +244,10 @@ pub trait Bitwise: Not + BitOr + BitXor + Shl - + Shr {} + + Shr { + // Computes the bitwise complement + fn compl(&self) -> Self; +} pub trait BitCount { fn population_count(&self) -> Self; diff --git a/src/libstd/num/uint_macros.rs b/src/libstd/num/uint_macros.rs index aa01b871b9d42..2c2cbb3d6ef08 100644 --- a/src/libstd/num/uint_macros.rs +++ b/src/libstd/num/uint_macros.rs @@ -281,7 +281,10 @@ impl Integer for $T { fn is_odd(&self) -> bool { !self.is_even() } } -impl Bitwise for $T {} +impl Bitwise for $T { + #[inline] + fn compl(&self) -> $T { -1 as $T ^ *self } +} #[cfg(not(test))] impl BitOr<$T,$T> for $T {