From 41f9deb2ee660cf45bc583171cc7c43a4b3ef4d5 Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Fri, 27 Sep 2013 20:41:49 -0700 Subject: [PATCH] std: add Primitive.is_signed --- src/libstd/num/f32.rs | 3 +++ src/libstd/num/f64.rs | 3 +++ src/libstd/num/int_macros.rs | 3 +++ src/libstd/num/num.rs | 1 + src/libstd/num/uint_macros.rs | 3 +++ 5 files changed, 13 insertions(+) diff --git a/src/libstd/num/f32.rs b/src/libstd/num/f32.rs index 41a3d193379..2b4a636e1ad 100644 --- a/src/libstd/num/f32.rs +++ b/src/libstd/num/f32.rs @@ -590,6 +590,9 @@ impl Primitive for f32 { #[inline] fn bytes(_: Option) -> uint { Primitive::bits(Some(0f32)) / 8 } + + #[inline] + fn is_signed(_: Option) -> bool { true } } impl Float for f32 { diff --git a/src/libstd/num/f64.rs b/src/libstd/num/f64.rs index 772596d15fb..d4442e5b34f 100644 --- a/src/libstd/num/f64.rs +++ b/src/libstd/num/f64.rs @@ -638,6 +638,9 @@ impl Primitive for f64 { #[inline] fn bytes(_: Option) -> uint { Primitive::bits(Some(0f64)) / 8 } + + #[inline] + fn is_signed(_: Option) -> bool { true } } impl Float for f64 { diff --git a/src/libstd/num/int_macros.rs b/src/libstd/num/int_macros.rs index 1070e8e592f..7fae567809b 100644 --- a/src/libstd/num/int_macros.rs +++ b/src/libstd/num/int_macros.rs @@ -380,6 +380,9 @@ impl Primitive for $T { #[inline] fn bytes(_: Option<$T>) -> uint { bits / 8 } + + #[inline] + fn is_signed(_: Option<$T>) -> bool { true } } // String conversion functions and impl str -> num diff --git a/src/libstd/num/num.rs b/src/libstd/num/num.rs index bccb20de458..fde1928f4a3 100644 --- a/src/libstd/num/num.rs +++ b/src/libstd/num/num.rs @@ -286,6 +286,7 @@ pub trait Primitive: Clone // FIXME (#8888): Removing `unused_self` requires #8888 to be fixed. fn bits(unused_self: Option) -> uint; fn bytes(unused_self: Option) -> uint; + fn is_signed(unused_self: Option) -> bool; } /// A collection of traits relevant to primitive signed and unsigned integers diff --git a/src/libstd/num/uint_macros.rs b/src/libstd/num/uint_macros.rs index 45280482b87..f52feced67c 100644 --- a/src/libstd/num/uint_macros.rs +++ b/src/libstd/num/uint_macros.rs @@ -306,6 +306,9 @@ impl Primitive for $T { #[inline] fn bytes(_: Option<$T>) -> uint { bits / 8 } + + #[inline] + fn is_signed(_: Option<$T>) -> bool { false } } impl BitCount for $T {