Skip to content

Commit fd42e97

Browse files
committed
Merge pull request #60 from SSheldon/stable_rust
Update for stable Rust by removing the core feature
2 parents c577bd6 + daaef13 commit fd42e97

File tree

6 files changed

+16
-38
lines changed

6 files changed

+16
-38
lines changed

src/array.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,6 @@ extern {
178178
#[test]
179179
fn should_box_and_unbox() {
180180
use number::{CFNumber, number};
181-
use std::num::ToPrimitive;
182181

183182
let arr = CFArray::from_CFTypes(&[
184183
number(1).as_CFType(),
@@ -189,18 +188,18 @@ fn should_box_and_unbox() {
189188
]);
190189

191190
unsafe {
192-
let mut sum = 0i32;
191+
let mut sum = 0;
193192

194193
for elem in arr.iter() {
195194
let number: CFNumber = TCFType::wrap_under_get_rule(mem::transmute(elem));
196-
sum += number.to_i32().unwrap()
195+
sum += number.to_i64().unwrap()
197196
}
198197

199198
assert!(sum == 15);
200199

201200
for elem in arr.iter() {
202201
let number: CFNumber = TCFType::wrap_under_get_rule(mem::transmute(elem));
203-
sum += number.to_i32().unwrap()
202+
sum += number.to_i64().unwrap()
204203
}
205204

206205
assert!(sum == 30);

src/base.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
// except according to those terms.
99

1010
use libc::{c_long, c_ulong, c_uint};
11-
use std::num::Int;
1211

1312
pub type Boolean = u8;
1413

@@ -26,7 +25,7 @@ pub trait CFIndexConvertible {
2625
impl CFIndexConvertible for usize {
2726
#[inline]
2827
fn to_CFIndex(self) -> CFIndex {
29-
let max_CFIndex: CFIndex = Int::max_value();
28+
let max_CFIndex = CFIndex::max_value();
3029
if self > (max_CFIndex as usize) {
3130
panic!("value out of range")
3231
}

src/lib.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212

1313
#![allow(non_snake_case)]
1414

15-
#![feature(core)]
16-
1715
extern crate libc;
1816

1917
#[cfg(target_os="macos")]

src/number.rs

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ use base::{TCFType, kCFAllocatorDefault};
1616

1717
use libc::c_void;
1818
use std::mem;
19-
use std::num::{FromPrimitive, ToPrimitive};
2019

2120
pub type CFNumberType = u32;
2221

@@ -93,66 +92,49 @@ impl TCFType<CFNumberRef> for CFNumber {
9392
}
9493

9594
// TODO(pcwalton): Floating point.
96-
impl ToPrimitive for CFNumber {
95+
impl CFNumber {
9796
#[inline]
98-
fn to_i64(&self) -> Option<i64> {
97+
pub fn to_i64(&self) -> Option<i64> {
9998
unsafe {
10099
let mut value: i64 = 0;
101100
let ok = CFNumberGetValue(self.obj, kCFNumberSInt64Type, mem::transmute(&mut value));
102-
assert!(ok);
103-
Some(value)
101+
if ok { Some(value) } else { None }
104102
}
105103
}
106104

107105
#[inline]
108-
fn to_u64(&self) -> Option<u64> {
109-
// CFNumber does not support unsigned 64-bit values.
110-
None
111-
}
112-
113-
#[inline]
114-
fn to_f64(&self) -> Option<f64> {
106+
pub fn to_f64(&self) -> Option<f64> {
115107
unsafe {
116108
let mut value: f64 = 0.0;
117109
let ok = CFNumberGetValue(self.obj, kCFNumberFloat64Type, mem::transmute(&mut value));
118-
assert!(ok);
119-
Some(value)
110+
if ok { Some(value) } else { None }
120111
}
121112
}
122-
}
123113

124-
// TODO(pcwalton): Floating point.
125-
impl FromPrimitive for CFNumber {
126114
#[inline]
127-
fn from_i64(value: i64) -> Option<CFNumber> {
115+
pub fn from_i64(value: i64) -> CFNumber {
128116
unsafe {
129117
let number_ref = CFNumberCreate(kCFAllocatorDefault,
130118
kCFNumberSInt64Type,
131119
mem::transmute(&value));
132-
Some(TCFType::wrap_under_create_rule(number_ref))
120+
TCFType::wrap_under_create_rule(number_ref)
133121
}
134122
}
135123

136124
#[inline]
137-
fn from_u64(_: u64) -> Option<CFNumber> {
138-
// CFNumber does not support unsigned 64-bit values.
139-
None
140-
}
141-
142-
#[inline]
143-
fn from_f64(value: f64) -> Option<CFNumber> {
125+
pub fn from_f64(value: f64) -> CFNumber {
144126
unsafe {
145127
let number_ref = CFNumberCreate(kCFAllocatorDefault,
146128
kCFNumberFloat64Type,
147129
mem::transmute(&value));
148-
Some(TCFType::wrap_under_create_rule(number_ref))
130+
TCFType::wrap_under_create_rule(number_ref)
149131
}
150132
}
151133
}
152134

153135
/// A convenience function to create CFNumbers.
154136
pub fn number(value: i64) -> CFNumber {
155-
FromPrimitive::from_i64(value).unwrap()
137+
CFNumber::from_i64(value)
156138
}
157139

158140
#[link(name = "CoreFoundation", kind = "framework")]

src/string.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -475,5 +475,5 @@ fn string_and_back() {
475475
let original = "The quick brown fox jumped over the slow lazy dog.";
476476
let cfstr = CFString::from_static_string(original);
477477
let converted = cfstr.to_string();
478-
assert!(original == converted.as_slice());
478+
assert!(converted == original);
479479
}

src/url.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,5 +240,5 @@ fn file_url_from_path() {
240240
let path = "/usr/local/foo/";
241241
let cfstr_path = CFString::from_static_string(path);
242242
let cfurl = CFURL::from_file_system_path(cfstr_path, kCFURLPOSIXPathStyle, true);
243-
assert!("file:///usr/local/foo/" == cfurl.get_string().to_string().as_slice());
243+
assert!(cfurl.get_string().to_string() == "file:///usr/local/foo/");
244244
}

0 commit comments

Comments
 (0)