Updated to remove core feature.
This commit is contained in:
+3
-4
@@ -178,7 +178,6 @@ extern {
|
||||
#[test]
|
||||
fn should_box_and_unbox() {
|
||||
use number::{CFNumber, number};
|
||||
use std::num::ToPrimitive;
|
||||
|
||||
let arr = CFArray::from_CFTypes(&[
|
||||
number(1).as_CFType(),
|
||||
@@ -189,18 +188,18 @@ fn should_box_and_unbox() {
|
||||
]);
|
||||
|
||||
unsafe {
|
||||
let mut sum = 0i32;
|
||||
let mut sum = 0;
|
||||
|
||||
for elem in arr.iter() {
|
||||
let number: CFNumber = TCFType::wrap_under_get_rule(mem::transmute(elem));
|
||||
sum += number.to_i32().unwrap()
|
||||
sum += number.to_i64().unwrap()
|
||||
}
|
||||
|
||||
assert!(sum == 15);
|
||||
|
||||
for elem in arr.iter() {
|
||||
let number: CFNumber = TCFType::wrap_under_get_rule(mem::transmute(elem));
|
||||
sum += number.to_i32().unwrap()
|
||||
sum += number.to_i64().unwrap()
|
||||
}
|
||||
|
||||
assert!(sum == 30);
|
||||
|
||||
+1
-2
@@ -8,7 +8,6 @@
|
||||
// except according to those terms.
|
||||
|
||||
use libc::{c_long, c_ulong, c_uint};
|
||||
use std::num::Int;
|
||||
|
||||
pub type Boolean = u8;
|
||||
|
||||
@@ -26,7 +25,7 @@ pub trait CFIndexConvertible {
|
||||
impl CFIndexConvertible for usize {
|
||||
#[inline]
|
||||
fn to_CFIndex(self) -> CFIndex {
|
||||
let max_CFIndex: CFIndex = Int::max_value();
|
||||
let max_CFIndex = CFIndex::max_value();
|
||||
if self > (max_CFIndex as usize) {
|
||||
panic!("value out of range")
|
||||
}
|
||||
|
||||
@@ -12,8 +12,6 @@
|
||||
|
||||
#![allow(non_snake_case)]
|
||||
|
||||
#![feature(core)]
|
||||
|
||||
extern crate libc;
|
||||
|
||||
#[cfg(target_os="macos")]
|
||||
|
||||
+10
-28
@@ -16,7 +16,6 @@ use base::{TCFType, kCFAllocatorDefault};
|
||||
|
||||
use libc::c_void;
|
||||
use std::mem;
|
||||
use std::num::{FromPrimitive, ToPrimitive};
|
||||
|
||||
pub type CFNumberType = u32;
|
||||
|
||||
@@ -93,66 +92,49 @@ impl TCFType<CFNumberRef> for CFNumber {
|
||||
}
|
||||
|
||||
// TODO(pcwalton): Floating point.
|
||||
impl ToPrimitive for CFNumber {
|
||||
impl CFNumber {
|
||||
#[inline]
|
||||
fn to_i64(&self) -> Option<i64> {
|
||||
pub fn to_i64(&self) -> Option<i64> {
|
||||
unsafe {
|
||||
let mut value: i64 = 0;
|
||||
let ok = CFNumberGetValue(self.obj, kCFNumberSInt64Type, mem::transmute(&mut value));
|
||||
assert!(ok);
|
||||
Some(value)
|
||||
if ok { Some(value) } else { None }
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn to_u64(&self) -> Option<u64> {
|
||||
// CFNumber does not support unsigned 64-bit values.
|
||||
None
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn to_f64(&self) -> Option<f64> {
|
||||
pub fn to_f64(&self) -> Option<f64> {
|
||||
unsafe {
|
||||
let mut value: f64 = 0.0;
|
||||
let ok = CFNumberGetValue(self.obj, kCFNumberFloat64Type, mem::transmute(&mut value));
|
||||
assert!(ok);
|
||||
Some(value)
|
||||
if ok { Some(value) } else { None }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO(pcwalton): Floating point.
|
||||
impl FromPrimitive for CFNumber {
|
||||
#[inline]
|
||||
fn from_i64(value: i64) -> Option<CFNumber> {
|
||||
pub fn from_i64(value: i64) -> CFNumber {
|
||||
unsafe {
|
||||
let number_ref = CFNumberCreate(kCFAllocatorDefault,
|
||||
kCFNumberSInt64Type,
|
||||
mem::transmute(&value));
|
||||
Some(TCFType::wrap_under_create_rule(number_ref))
|
||||
TCFType::wrap_under_create_rule(number_ref)
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn from_u64(_: u64) -> Option<CFNumber> {
|
||||
// CFNumber does not support unsigned 64-bit values.
|
||||
None
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn from_f64(value: f64) -> Option<CFNumber> {
|
||||
pub fn from_f64(value: f64) -> CFNumber {
|
||||
unsafe {
|
||||
let number_ref = CFNumberCreate(kCFAllocatorDefault,
|
||||
kCFNumberFloat64Type,
|
||||
mem::transmute(&value));
|
||||
Some(TCFType::wrap_under_create_rule(number_ref))
|
||||
TCFType::wrap_under_create_rule(number_ref)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// A convenience function to create CFNumbers.
|
||||
pub fn number(value: i64) -> CFNumber {
|
||||
FromPrimitive::from_i64(value).unwrap()
|
||||
CFNumber::from_i64(value)
|
||||
}
|
||||
|
||||
#[link(name = "CoreFoundation", kind = "framework")]
|
||||
|
||||
+1
-1
@@ -475,5 +475,5 @@ fn string_and_back() {
|
||||
let original = "The quick brown fox jumped over the slow lazy dog.";
|
||||
let cfstr = CFString::from_static_string(original);
|
||||
let converted = cfstr.to_string();
|
||||
assert!(original == converted.as_slice());
|
||||
assert!(converted == original);
|
||||
}
|
||||
|
||||
+1
-1
@@ -240,5 +240,5 @@ fn file_url_from_path() {
|
||||
let path = "/usr/local/foo/";
|
||||
let cfstr_path = CFString::from_static_string(path);
|
||||
let cfurl = CFURL::from_file_system_path(cfstr_path, kCFURLPOSIXPathStyle, true);
|
||||
assert!("file:///usr/local/foo/" == cfurl.get_string().to_string().as_slice());
|
||||
assert!(cfurl.get_string().to_string() == "file:///usr/local/foo/");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user