85 lines
3.0 KiB
Rust
85 lines
3.0 KiB
Rust
// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
|
|
// file at the top-level directory of this distribution.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
|
// option. This file may not be copied, modified, or distributed
|
|
// except according to those terms.
|
|
|
|
use std::os::raw::c_void;
|
|
|
|
use base::{CFAllocatorRef, CFTypeID, CFComparisonResult};
|
|
|
|
#[repr(C)]
|
|
pub struct __CFBoolean(c_void);
|
|
|
|
pub type CFBooleanRef = *const __CFBoolean;
|
|
|
|
pub type CFNumberType = u32;
|
|
|
|
// members of enum CFNumberType
|
|
pub const kCFNumberSInt8Type: CFNumberType = 1;
|
|
pub const kCFNumberSInt16Type: CFNumberType = 2;
|
|
pub const kCFNumberSInt32Type: CFNumberType = 3;
|
|
pub const kCFNumberSInt64Type: CFNumberType = 4;
|
|
pub const kCFNumberFloat32Type: CFNumberType = 5;
|
|
pub const kCFNumberFloat64Type: CFNumberType = 6;
|
|
pub const kCFNumberCharType: CFNumberType = 7;
|
|
pub const kCFNumberShortType: CFNumberType = 8;
|
|
pub const kCFNumberIntType: CFNumberType = 9;
|
|
pub const kCFNumberLongType: CFNumberType = 10;
|
|
pub const kCFNumberLongLongType: CFNumberType = 11;
|
|
pub const kCFNumberFloatType: CFNumberType = 12;
|
|
pub const kCFNumberDoubleType: CFNumberType = 13;
|
|
pub const kCFNumberCFIndexType: CFNumberType = 14;
|
|
pub const kCFNumberNSIntegerType: CFNumberType = 15;
|
|
pub const kCFNumberCGFloatType: CFNumberType = 16;
|
|
pub const kCFNumberMaxType: CFNumberType = 16;
|
|
|
|
// This is an enum due to zero-sized types warnings.
|
|
// For more details see https://github.com/rust-lang/rust/issues/27303
|
|
pub enum __CFNumber {}
|
|
|
|
pub type CFNumberRef = *const __CFNumber;
|
|
|
|
extern {
|
|
/*
|
|
* CFNumber.h
|
|
*/
|
|
pub static kCFBooleanTrue: CFBooleanRef;
|
|
pub static kCFBooleanFalse: CFBooleanRef;
|
|
|
|
pub fn CFBooleanGetTypeID() -> CFTypeID;
|
|
pub fn CFBooleanGetValue(boolean: CFBooleanRef) -> bool;
|
|
|
|
pub fn CFNumberCreate(allocator: CFAllocatorRef, theType: CFNumberType, valuePtr: *const c_void)
|
|
-> CFNumberRef;
|
|
//fn CFNumberGetByteSize
|
|
pub fn CFNumberGetValue(number: CFNumberRef, theType: CFNumberType, valuePtr: *mut c_void) -> bool;
|
|
pub fn CFNumberCompare(date: CFNumberRef, other: CFNumberRef, context: *mut c_void) -> CFComparisonResult;
|
|
pub fn CFNumberGetTypeID() -> CFTypeID;
|
|
pub fn CFNumberGetType(number: CFNumberRef) -> CFNumberType;
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod test {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn match_for_type_id_should_be_backwards_compatible() {
|
|
let type_id = kCFNumberFloat32Type;
|
|
// this is the old style of matching for static variables
|
|
match type_id {
|
|
vf64 if vf64 == kCFNumberFloat32Type => assert!(true),
|
|
_ => panic!("should not happen"),
|
|
};
|
|
|
|
// this is new new style of matching for consts
|
|
match type_id {
|
|
kCFNumberFloat32Type => assert!(true),
|
|
_ => panic!("should not happen"),
|
|
};
|
|
}
|
|
}
|