Add size_of and bits methods
This commit is contained in:
parent
4d48591e80
commit
9d03050ed1
1 changed files with 42 additions and 0 deletions
|
@ -18,6 +18,9 @@ pub trait Number: Eq, Num, NumConv, Ord {
|
|||
*/
|
||||
static pure fn from<T:Number>(n: T) -> self;
|
||||
|
||||
static pure fn size_of() -> uint;
|
||||
static pure fn bits() -> uint;
|
||||
|
||||
static pure fn zero() -> self; /// The additive identity
|
||||
static pure fn one() -> self; // The multiplicative identity
|
||||
}
|
||||
|
@ -28,6 +31,9 @@ pub impl u8: Number {
|
|||
*/
|
||||
#[inline(always)] static pure fn from<T:Number>(n: T) -> u8 { n.to_u8() }
|
||||
|
||||
#[inline(always)] static pure fn size_of() -> uint { sys::size_of::<u8>() }
|
||||
#[inline(always)] static pure fn bits() -> uint { 8 }
|
||||
|
||||
#[inline(always)] static pure fn zero() -> u8 { 0u8 } /// 0u8
|
||||
#[inline(always)] static pure fn one() -> u8 { 1u8 } // 1u8
|
||||
}
|
||||
|
@ -38,6 +44,9 @@ pub impl u16: Number {
|
|||
*/
|
||||
#[inline(always)] static pure fn from<T:Number>(n: T) -> u16 { n.to_u16() }
|
||||
|
||||
#[inline(always)] static pure fn size_of() -> uint { sys::size_of::<u16>() }
|
||||
#[inline(always)] static pure fn bits() -> uint { 16 }
|
||||
|
||||
#[inline(always)] static pure fn zero() -> u16 { 0u16 } /// 0u16
|
||||
#[inline(always)] static pure fn one() -> u16 { 1u16 } // 1u16
|
||||
}
|
||||
|
@ -48,6 +57,9 @@ pub impl u32: Number {
|
|||
*/
|
||||
#[inline(always)] static pure fn from<T:Number>(n: T) -> u32 { n.to_u32() }
|
||||
|
||||
#[inline(always)] static pure fn size_of() -> uint { sys::size_of::<u32>() }
|
||||
#[inline(always)] static pure fn bits() -> uint { 32 }
|
||||
|
||||
#[inline(always)] static pure fn zero() -> u32 { 0u32 } /// 0u32
|
||||
#[inline(always)] static pure fn one() -> u32 { 1u32 } // 1u32
|
||||
}
|
||||
|
@ -58,6 +70,9 @@ pub impl u64: Number {
|
|||
*/
|
||||
#[inline(always)] static pure fn from<T:Number>(n: T) -> u64 { n.to_u64() }
|
||||
|
||||
#[inline(always)] static pure fn size_of() -> uint { sys::size_of::<u64>() }
|
||||
#[inline(always)] static pure fn bits() -> uint { 64 }
|
||||
|
||||
#[inline(always)] static pure fn zero() -> u64 { 0u64 } /// 0u64
|
||||
#[inline(always)] static pure fn one() -> u64 { 1u64 } // 1u64
|
||||
}
|
||||
|
@ -68,6 +83,9 @@ pub impl uint: Number {
|
|||
*/
|
||||
#[inline(always)] static pure fn from<T:Number>(n: T) -> uint { n.to_uint() }
|
||||
|
||||
#[inline(always)] static pure fn size_of() -> uint { sys::size_of::<uint>() }
|
||||
#[inline(always)] static pure fn bits() -> uint { sys::size_of::<uint>() * 8 }
|
||||
|
||||
#[inline(always)] static pure fn zero() -> uint { 0u } /// 0u
|
||||
#[inline(always)] static pure fn one() -> uint { 1u } // 1u
|
||||
}
|
||||
|
@ -78,6 +96,9 @@ pub impl i8: Number {
|
|||
*/
|
||||
#[inline(always)] static pure fn from<T:Number>(n: T) -> i8 { n.to_i8() }
|
||||
|
||||
#[inline(always)] static pure fn size_of() -> uint { sys::size_of::<i8>() }
|
||||
#[inline(always)] static pure fn bits() -> uint { 8 }
|
||||
|
||||
#[inline(always)] static pure fn zero() -> i8 { 0i8 } /// 0i8
|
||||
#[inline(always)] static pure fn one() -> i8 { 1i8 } // 1i8
|
||||
}
|
||||
|
@ -88,6 +109,9 @@ pub impl i16: Number {
|
|||
*/
|
||||
#[inline(always)] static pure fn from<T:Number>(n: T) -> i16 { n.to_i16() }
|
||||
|
||||
#[inline(always)] static pure fn size_of() -> uint { sys::size_of::<i16>() }
|
||||
#[inline(always)] static pure fn bits() -> uint { 16 }
|
||||
|
||||
#[inline(always)] static pure fn zero() -> i16 { 0i16 } /// 0i16
|
||||
#[inline(always)] static pure fn one() -> i16 { 1i16 } // 1i16
|
||||
}
|
||||
|
@ -98,6 +122,9 @@ pub impl i32: Number {
|
|||
*/
|
||||
#[inline(always)] static pure fn from<T:Number>(n: T) -> i32 { n.to_i32() }
|
||||
|
||||
#[inline(always)] static pure fn size_of() -> uint { sys::size_of::<i32>() }
|
||||
#[inline(always)] static pure fn bits() -> uint { 32 }
|
||||
|
||||
#[inline(always)] static pure fn zero() -> i32 { 0i32 } /// 0i32
|
||||
#[inline(always)] static pure fn one() -> i32 { 1i32 } // 1i32
|
||||
}
|
||||
|
@ -108,6 +135,9 @@ pub impl i64: Number {
|
|||
*/
|
||||
#[inline(always)] static pure fn from<T:Number>(n: T) -> i64 { n.to_i64() }
|
||||
|
||||
#[inline(always)] static pure fn size_of() -> uint { sys::size_of::<i64>() }
|
||||
#[inline(always)] static pure fn bits() -> uint { 64 }
|
||||
|
||||
#[inline(always)] static pure fn zero() -> i64 { 0i64 } /// 0i64
|
||||
#[inline(always)] static pure fn one() -> i64 { 1i64 } // 1i64
|
||||
}
|
||||
|
@ -118,6 +148,9 @@ pub impl int: Number {
|
|||
*/
|
||||
#[inline(always)] static pure fn from<T:Number>(n: T) -> int { n.to_int() }
|
||||
|
||||
#[inline(always)] static pure fn size_of() -> uint { sys::size_of::<int>() }
|
||||
#[inline(always)] static pure fn bits() -> uint { sys::size_of::<int>() * 8 }
|
||||
|
||||
#[inline(always)] static pure fn zero() -> int { 0 } /// 0
|
||||
#[inline(always)] static pure fn one() -> int { 1 } // 1
|
||||
}
|
||||
|
@ -128,6 +161,9 @@ pub impl f32: Number {
|
|||
*/
|
||||
#[inline(always)] static pure fn from<T:Number>(n: T) -> f32 { n.to_f32() }
|
||||
|
||||
#[inline(always)] static pure fn size_of() -> uint { sys::size_of::<f32>() }
|
||||
#[inline(always)] static pure fn bits() -> uint { 32 }
|
||||
|
||||
#[inline(always)] static pure fn zero() -> f32 { 0f32 } /// 0f32
|
||||
#[inline(always)] static pure fn one() -> f32 { 1f32 } // 1f32
|
||||
}
|
||||
|
@ -138,6 +174,9 @@ pub impl f64: Number {
|
|||
*/
|
||||
#[inline(always)] static pure fn from<T:Number>(n: T) -> f64 { n.to_f64() }
|
||||
|
||||
#[inline(always)] static pure fn size_of() -> uint { sys::size_of::<f64>() }
|
||||
#[inline(always)] static pure fn bits() -> uint { 64 }
|
||||
|
||||
#[inline(always)] static pure fn zero() -> f64 { 0f64 } /// 0f64
|
||||
#[inline(always)] static pure fn one() -> f64 { 1f64 } // 1f64
|
||||
}
|
||||
|
@ -148,6 +187,9 @@ pub impl float: Number {
|
|||
*/
|
||||
#[inline(always)] static pure fn from<T:Number>(n: T) -> float { n.to_float() }
|
||||
|
||||
#[inline(always)] static pure fn size_of() -> uint { sys::size_of::<float>() }
|
||||
#[inline(always)] static pure fn bits() -> uint { sys::size_of::<float>() * 8 }
|
||||
|
||||
#[inline(always)] static pure fn zero() -> float { 0f } /// 0f
|
||||
#[inline(always)] static pure fn one() -> float { 1f } // 1f
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue