Skip to content

Commit 353ce87

Browse files
committed
Generate NumCast impls and tests using macros
1 parent 3ffd735 commit 353ce87

File tree

14 files changed

+114
-922
lines changed

14 files changed

+114
-922
lines changed

src/libcore/num/f32.rs

Lines changed: 0 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
1313
use cmath;
1414
use libc::{c_float, c_int};
15-
use num::NumCast;
1615
use num::strconv;
1716
use num;
1817
use option::Option;
@@ -287,30 +286,6 @@ impl num::One for f32 {
287286
fn one() -> f32 { 1.0 }
288287
}
289288

290-
impl NumCast for f32 {
291-
/**
292-
* Cast `n` to an `f32`
293-
*/
294-
#[inline(always)]
295-
fn from<N:NumCast>(n: N) -> f32 { n.to_f32() }
296-
297-
#[inline(always)] fn to_u8(&self) -> u8 { *self as u8 }
298-
#[inline(always)] fn to_u16(&self) -> u16 { *self as u16 }
299-
#[inline(always)] fn to_u32(&self) -> u32 { *self as u32 }
300-
#[inline(always)] fn to_u64(&self) -> u64 { *self as u64 }
301-
#[inline(always)] fn to_uint(&self) -> uint { *self as uint }
302-
303-
#[inline(always)] fn to_i8(&self) -> i8 { *self as i8 }
304-
#[inline(always)] fn to_i16(&self) -> i16 { *self as i16 }
305-
#[inline(always)] fn to_i32(&self) -> i32 { *self as i32 }
306-
#[inline(always)] fn to_i64(&self) -> i64 { *self as i64 }
307-
#[inline(always)] fn to_int(&self) -> int { *self as int }
308-
309-
#[inline(always)] fn to_f32(&self) -> f32 { *self }
310-
#[inline(always)] fn to_f64(&self) -> f64 { *self as f64 }
311-
#[inline(always)] fn to_float(&self) -> float { *self as float }
312-
}
313-
314289
#[cfg(notest)]
315290
impl ops::Add<f32,f32> for f32 {
316291
fn add(&self, other: &f32) -> f32 { *self + *other }
@@ -592,51 +567,6 @@ pub fn test_num() {
592567
assert!((ten.modulo(&two) == num::cast(0)));
593568
}
594569

595-
#[test]
596-
fn test_numcast() {
597-
assert!((20u == 20f32.to_uint()));
598-
assert!((20u8 == 20f32.to_u8()));
599-
assert!((20u16 == 20f32.to_u16()));
600-
assert!((20u32 == 20f32.to_u32()));
601-
assert!((20u64 == 20f32.to_u64()));
602-
assert!((20i == 20f32.to_int()));
603-
assert!((20i8 == 20f32.to_i8()));
604-
assert!((20i16 == 20f32.to_i16()));
605-
assert!((20i32 == 20f32.to_i32()));
606-
assert!((20i64 == 20f32.to_i64()));
607-
assert!((20f == 20f32.to_float()));
608-
assert!((20f32 == 20f32.to_f32()));
609-
assert!((20f64 == 20f32.to_f64()));
610-
611-
assert!((20f32 == NumCast::from(20u)));
612-
assert!((20f32 == NumCast::from(20u8)));
613-
assert!((20f32 == NumCast::from(20u16)));
614-
assert!((20f32 == NumCast::from(20u32)));
615-
assert!((20f32 == NumCast::from(20u64)));
616-
assert!((20f32 == NumCast::from(20i)));
617-
assert!((20f32 == NumCast::from(20i8)));
618-
assert!((20f32 == NumCast::from(20i16)));
619-
assert!((20f32 == NumCast::from(20i32)));
620-
assert!((20f32 == NumCast::from(20i64)));
621-
assert!((20f32 == NumCast::from(20f)));
622-
assert!((20f32 == NumCast::from(20f32)));
623-
assert!((20f32 == NumCast::from(20f64)));
624-
625-
assert!((20f32 == num::cast(20u)));
626-
assert!((20f32 == num::cast(20u8)));
627-
assert!((20f32 == num::cast(20u16)));
628-
assert!((20f32 == num::cast(20u32)));
629-
assert!((20f32 == num::cast(20u64)));
630-
assert!((20f32 == num::cast(20i)));
631-
assert!((20f32 == num::cast(20i8)));
632-
assert!((20f32 == num::cast(20i16)));
633-
assert!((20f32 == num::cast(20i32)));
634-
assert!((20f32 == num::cast(20i64)));
635-
assert!((20f32 == num::cast(20f)));
636-
assert!((20f32 == num::cast(20f32)));
637-
assert!((20f32 == num::cast(20f64)));
638-
}
639-
640570
//
641571
// Local Variables:
642572
// mode: rust

src/libcore/num/f64.rs

Lines changed: 0 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
1313
use cmath;
1414
use libc::{c_double, c_int};
15-
use num::NumCast;
1615
use num::strconv;
1716
use num;
1817
use option::Option;
@@ -299,30 +298,6 @@ impl cmp::Ord for f64 {
299298
fn gt(&self, other: &f64) -> bool { (*self) > (*other) }
300299
}
301300

302-
impl NumCast for f64 {
303-
/**
304-
* Cast `n` to an `f64`
305-
*/
306-
#[inline(always)]
307-
fn from<N:NumCast>(n: N) -> f64 { n.to_f64() }
308-
309-
#[inline(always)] fn to_u8(&self) -> u8 { *self as u8 }
310-
#[inline(always)] fn to_u16(&self) -> u16 { *self as u16 }
311-
#[inline(always)] fn to_u32(&self) -> u32 { *self as u32 }
312-
#[inline(always)] fn to_u64(&self) -> u64 { *self as u64 }
313-
#[inline(always)] fn to_uint(&self) -> uint { *self as uint }
314-
315-
#[inline(always)] fn to_i8(&self) -> i8 { *self as i8 }
316-
#[inline(always)] fn to_i16(&self) -> i16 { *self as i16 }
317-
#[inline(always)] fn to_i32(&self) -> i32 { *self as i32 }
318-
#[inline(always)] fn to_i64(&self) -> i64 { *self as i64 }
319-
#[inline(always)] fn to_int(&self) -> int { *self as int }
320-
321-
#[inline(always)] fn to_f32(&self) -> f32 { *self as f32 }
322-
#[inline(always)] fn to_f64(&self) -> f64 { *self }
323-
#[inline(always)] fn to_float(&self) -> float { *self as float }
324-
}
325-
326301
impl num::Zero for f64 {
327302
#[inline(always)]
328303
fn zero() -> f64 { 0.0 }
@@ -614,51 +589,6 @@ pub fn test_num() {
614589
assert!((ten.modulo(&two) == num::cast(0)));
615590
}
616591

617-
#[test]
618-
fn test_numcast() {
619-
assert!((20u == 20f64.to_uint()));
620-
assert!((20u8 == 20f64.to_u8()));
621-
assert!((20u16 == 20f64.to_u16()));
622-
assert!((20u32 == 20f64.to_u32()));
623-
assert!((20u64 == 20f64.to_u64()));
624-
assert!((20i == 20f64.to_int()));
625-
assert!((20i8 == 20f64.to_i8()));
626-
assert!((20i16 == 20f64.to_i16()));
627-
assert!((20i32 == 20f64.to_i32()));
628-
assert!((20i64 == 20f64.to_i64()));
629-
assert!((20f == 20f64.to_float()));
630-
assert!((20f32 == 20f64.to_f32()));
631-
assert!((20f64 == 20f64.to_f64()));
632-
633-
assert!((20f64 == NumCast::from(20u)));
634-
assert!((20f64 == NumCast::from(20u8)));
635-
assert!((20f64 == NumCast::from(20u16)));
636-
assert!((20f64 == NumCast::from(20u32)));
637-
assert!((20f64 == NumCast::from(20u64)));
638-
assert!((20f64 == NumCast::from(20i)));
639-
assert!((20f64 == NumCast::from(20i8)));
640-
assert!((20f64 == NumCast::from(20i16)));
641-
assert!((20f64 == NumCast::from(20i32)));
642-
assert!((20f64 == NumCast::from(20i64)));
643-
assert!((20f64 == NumCast::from(20f)));
644-
assert!((20f64 == NumCast::from(20f32)));
645-
assert!((20f64 == NumCast::from(20f64)));
646-
647-
assert!((20f64 == num::cast(20u)));
648-
assert!((20f64 == num::cast(20u8)));
649-
assert!((20f64 == num::cast(20u16)));
650-
assert!((20f64 == num::cast(20u32)));
651-
assert!((20f64 == num::cast(20u64)));
652-
assert!((20f64 == num::cast(20i)));
653-
assert!((20f64 == num::cast(20i8)));
654-
assert!((20f64 == num::cast(20i16)));
655-
assert!((20f64 == num::cast(20i32)));
656-
assert!((20f64 == num::cast(20i64)));
657-
assert!((20f64 == num::cast(20f)));
658-
assert!((20f64 == num::cast(20f32)));
659-
assert!((20f64 == num::cast(20f64)));
660-
}
661-
662592
//
663593
// Local Variables:
664594
// mode: rust

src/libcore/num/float.rs

Lines changed: 0 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
// PORT this must match in width according to architecture
2222

2323
use f64;
24-
use num::NumCast;
2524
use num::strconv;
2625
use num;
2726
use option::Option;
@@ -417,30 +416,6 @@ impl num::One for float {
417416
fn one() -> float { 1.0 }
418417
}
419418
420-
impl NumCast for float {
421-
/**
422-
* Cast `n` to a `float`
423-
*/
424-
#[inline(always)]
425-
fn from<N:NumCast>(n: N) -> float { n.to_float() }
426-
427-
#[inline(always)] fn to_u8(&self) -> u8 { *self as u8 }
428-
#[inline(always)] fn to_u16(&self) -> u16 { *self as u16 }
429-
#[inline(always)] fn to_u32(&self) -> u32 { *self as u32 }
430-
#[inline(always)] fn to_u64(&self) -> u64 { *self as u64 }
431-
#[inline(always)] fn to_uint(&self) -> uint { *self as uint }
432-
433-
#[inline(always)] fn to_i8(&self) -> i8 { *self as i8 }
434-
#[inline(always)] fn to_i16(&self) -> i16 { *self as i16 }
435-
#[inline(always)] fn to_i32(&self) -> i32 { *self as i32 }
436-
#[inline(always)] fn to_i64(&self) -> i64 { *self as i64 }
437-
#[inline(always)] fn to_int(&self) -> int { *self as int }
438-
439-
#[inline(always)] fn to_f32(&self) -> f32 { *self as f32 }
440-
#[inline(always)] fn to_f64(&self) -> f64 { *self as f64 }
441-
#[inline(always)] fn to_float(&self) -> float { *self }
442-
}
443-
444419
impl num::Round for float {
445420
#[inline(always)]
446421
fn round(&self, mode: num::RoundMode) -> float {
@@ -700,51 +675,6 @@ pub fn test_num() {
700675
assert!((ten.modulo(&two) == num::cast(0)));
701676
}
702677

703-
#[test]
704-
fn test_numcast() {
705-
assert!((20u == 20f.to_uint()));
706-
assert!((20u8 == 20f.to_u8()));
707-
assert!((20u16 == 20f.to_u16()));
708-
assert!((20u32 == 20f.to_u32()));
709-
assert!((20u64 == 20f.to_u64()));
710-
assert!((20i == 20f.to_int()));
711-
assert!((20i8 == 20f.to_i8()));
712-
assert!((20i16 == 20f.to_i16()));
713-
assert!((20i32 == 20f.to_i32()));
714-
assert!((20i64 == 20f.to_i64()));
715-
assert!((20f == 20f.to_float()));
716-
assert!((20f32 == 20f.to_f32()));
717-
assert!((20f64 == 20f.to_f64()));
718-
719-
assert!((20f == NumCast::from(20u)));
720-
assert!((20f == NumCast::from(20u8)));
721-
assert!((20f == NumCast::from(20u16)));
722-
assert!((20f == NumCast::from(20u32)));
723-
assert!((20f == NumCast::from(20u64)));
724-
assert!((20f == NumCast::from(20i)));
725-
assert!((20f == NumCast::from(20i8)));
726-
assert!((20f == NumCast::from(20i16)));
727-
assert!((20f == NumCast::from(20i32)));
728-
assert!((20f == NumCast::from(20i64)));
729-
assert!((20f == NumCast::from(20f)));
730-
assert!((20f == NumCast::from(20f32)));
731-
assert!((20f == NumCast::from(20f64)));
732-
733-
assert!((20f == num::cast(20u)));
734-
assert!((20f == num::cast(20u8)));
735-
assert!((20f == num::cast(20u16)));
736-
assert!((20f == num::cast(20u32)));
737-
assert!((20f == num::cast(20u64)));
738-
assert!((20f == num::cast(20i)));
739-
assert!((20f == num::cast(20i8)));
740-
assert!((20f == num::cast(20i16)));
741-
assert!((20f == num::cast(20i32)));
742-
assert!((20f == num::cast(20i64)));
743-
assert!((20f == num::cast(20f)));
744-
assert!((20f == num::cast(20f32)));
745-
assert!((20f == num::cast(20f64)));
746-
}
747-
748678

749679
//
750680
// Local Variables:

src/libcore/num/int-template/i16.rs

Lines changed: 0 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -10,78 +10,7 @@
1010

1111
//! Operations and constants for `i16`
1212
13-
use num::NumCast;
14-
1513
mod inst {
1614
pub type T = i16;
1715
pub static bits: uint = ::u16::bits;
1816
}
19-
20-
impl NumCast for i16 {
21-
/**
22-
* Cast `n` to a `i16`
23-
*/
24-
#[inline(always)]
25-
fn from<N:NumCast>(n: N) -> i16 { n.to_i16() }
26-
27-
#[inline(always)] fn to_u8(&self) -> u8 { *self as u8 }
28-
#[inline(always)] fn to_u16(&self) -> u16 { *self as u16 }
29-
#[inline(always)] fn to_u32(&self) -> u32 { *self as u32 }
30-
#[inline(always)] fn to_u64(&self) -> u64 { *self as u64 }
31-
#[inline(always)] fn to_uint(&self) -> uint { *self as uint }
32-
33-
#[inline(always)] fn to_i8(&self) -> i8 { *self as i8 }
34-
#[inline(always)] fn to_i16(&self) -> i16 { *self }
35-
#[inline(always)] fn to_i32(&self) -> i32 { *self as i32 }
36-
#[inline(always)] fn to_i64(&self) -> i64 { *self as i64 }
37-
#[inline(always)] fn to_int(&self) -> int { *self as int }
38-
39-
#[inline(always)] fn to_f32(&self) -> f32 { *self as f32 }
40-
#[inline(always)] fn to_f64(&self) -> f64 { *self as f64 }
41-
#[inline(always)] fn to_float(&self) -> float { *self as float }
42-
}
43-
44-
#[test]
45-
fn test_numcast() {
46-
assert!((20u == 20i16.to_uint()));
47-
assert!((20u8 == 20i16.to_u8()));
48-
assert!((20u16 == 20i16.to_u16()));
49-
assert!((20u32 == 20i16.to_u32()));
50-
assert!((20u64 == 20i16.to_u64()));
51-
assert!((20i == 20i16.to_int()));
52-
assert!((20i8 == 20i16.to_i8()));
53-
assert!((20i16 == 20i16.to_i16()));
54-
assert!((20i32 == 20i16.to_i32()));
55-
assert!((20i64 == 20i16.to_i64()));
56-
assert!((20f == 20i16.to_float()));
57-
assert!((20f32 == 20i16.to_f32()));
58-
assert!((20f64 == 20i16.to_f64()));
59-
60-
assert!((20i16 == NumCast::from(20u)));
61-
assert!((20i16 == NumCast::from(20u8)));
62-
assert!((20i16 == NumCast::from(20u16)));
63-
assert!((20i16 == NumCast::from(20u32)));
64-
assert!((20i16 == NumCast::from(20u64)));
65-
assert!((20i16 == NumCast::from(20i)));
66-
assert!((20i16 == NumCast::from(20i8)));
67-
assert!((20i16 == NumCast::from(20i16)));
68-
assert!((20i16 == NumCast::from(20i32)));
69-
assert!((20i16 == NumCast::from(20i64)));
70-
assert!((20i16 == NumCast::from(20f)));
71-
assert!((20i16 == NumCast::from(20f32)));
72-
assert!((20i16 == NumCast::from(20f64)));
73-
74-
assert!((20i16 == num::cast(20u)));
75-
assert!((20i16 == num::cast(20u8)));
76-
assert!((20i16 == num::cast(20u16)));
77-
assert!((20i16 == num::cast(20u32)));
78-
assert!((20i16 == num::cast(20u64)));
79-
assert!((20i16 == num::cast(20i)));
80-
assert!((20i16 == num::cast(20i8)));
81-
assert!((20i16 == num::cast(20i16)));
82-
assert!((20i16 == num::cast(20i32)));
83-
assert!((20i16 == num::cast(20i64)));
84-
assert!((20i16 == num::cast(20f)));
85-
assert!((20i16 == num::cast(20f32)));
86-
assert!((20i16 == num::cast(20f64)));
87-
}

0 commit comments

Comments
 (0)