Upgrade to latest Rust.

This commit is contained in:
Jack Moffitt
2013-12-20 21:34:23 -07:00
parent 0a9090b60d
commit 6c8c2a75b8
10 changed files with 251 additions and 344 deletions
+5 -12
View File
@@ -13,7 +13,6 @@ use base::{CFAllocatorRef, CFIndex, CFIndexConvertible, CFRelease, CFType, CFTyp
use base::{kCFAllocatorDefault};
use std::cast;
use std::libc::c_void;
use std::vec;
/// FIXME(pcwalton): This is wrong.
pub type CFArrayRetainCallBack = *u8;
@@ -47,7 +46,6 @@ pub struct CFArray {
}
impl Drop for CFArray {
#[fixed_stack_segment]
fn drop(&mut self) {
unsafe {
CFRelease(self.as_CFTypeRef())
@@ -55,12 +53,12 @@ impl Drop for CFArray {
}
}
pub struct CFArrayIterator<'self> {
priv array: &'self CFArray,
pub struct CFArrayIterator<'a> {
priv array: &'a CFArray,
priv index: CFIndex,
}
impl<'self> Iterator<*c_void> for CFArrayIterator<'self> {
impl<'a> Iterator<*c_void> for CFArrayIterator<'a> {
fn next(&mut self) -> Option<*c_void> {
if self.index >= self.array.len() {
None
@@ -85,7 +83,6 @@ impl TCFType<CFArrayRef> for CFArray {
}
}
#[fixed_stack_segment]
#[inline]
fn type_id(_: Option<CFArray>) -> CFTypeID {
unsafe {
@@ -96,12 +93,11 @@ impl TCFType<CFArrayRef> for CFArray {
impl CFArray {
/// Creates a new `CFArray` with the given elements, which must be `CFType` objects.
#[fixed_stack_segment]
pub fn from_CFTypes(elems: &[CFType]) -> CFArray {
unsafe {
let elems = elems.map(|elem| elem.as_CFTypeRef());
let array_ref = CFArrayCreate(kCFAllocatorDefault,
cast::transmute(vec::raw::to_ptr(elems)),
cast::transmute(elems.as_ptr()),
elems.len().to_CFIndex(),
&kCFTypeArrayCallBacks);
TCFType::wrap_under_create_rule(array_ref)
@@ -121,7 +117,6 @@ impl CFArray {
}
}
#[fixed_stack_segment]
#[inline]
pub fn len(&self) -> CFIndex {
unsafe {
@@ -134,7 +129,6 @@ impl Index<i64,*c_void> for CFArray {
/// Careful; the loop body must wrap the reference properly. Generally, when array elements are
/// Core Foundation objects (not always true), they need to be wrapped with
/// `TCFType::wrap_under_get_rule()`. The safer `iter_CFTypes` method will do this for you.
#[fixed_stack_segment]
#[inline]
fn index(&self, index: &CFIndex) -> *c_void {
assert!(*index < self.len());
@@ -144,8 +138,7 @@ impl Index<i64,*c_void> for CFArray {
}
}
#[link_args="-framework CoreFoundation"]
#[nolink]
#[link(name = "CoreFoundation", kind = "framework")]
extern {
/*
* CFArray.h
+1 -8
View File
@@ -69,7 +69,6 @@ pub struct CFType {
}
impl Clone for CFType {
#[fixed_stack_segment]
#[inline]
fn clone(&self) -> CFType {
unsafe {
@@ -79,7 +78,6 @@ impl Clone for CFType {
}
impl Drop for CFType {
#[fixed_stack_segment]
fn drop(&mut self) {
unsafe {
CFRelease(self.obj)
@@ -122,7 +120,6 @@ pub trait TCFType<ConcreteTypeRef> {
/// Returns an instance of the object, wrapping the underlying `CFTypeRef` subclass. Use this
/// when following Core Foundation's "Get Rule". The reference count *is* bumped.
#[fixed_stack_segment]
#[inline]
unsafe fn wrap_under_get_rule(reference: ConcreteTypeRef) -> Self {
let reference: ConcreteTypeRef = cast::transmute(CFRetain(cast::transmute(reference)));
@@ -131,7 +128,6 @@ pub trait TCFType<ConcreteTypeRef> {
/// Returns the reference count of the object. It is unwise to do anything other than test
/// whether the return value of this method is greater than zero.
#[fixed_stack_segment]
#[inline]
fn retain_count(&self) -> CFIndex {
unsafe {
@@ -140,7 +136,6 @@ pub trait TCFType<ConcreteTypeRef> {
}
/// Returns the type ID of this object.
#[fixed_stack_segment]
#[inline]
fn type_of(&self) -> CFTypeID {
unsafe {
@@ -149,7 +144,6 @@ pub trait TCFType<ConcreteTypeRef> {
}
/// Writes a debugging version of this object on standard error.
#[fixed_stack_segment]
fn show(&self) {
unsafe {
CFShow(self.as_CFTypeRef())
@@ -199,8 +193,7 @@ impl TCFType<CFTypeRef> for CFType {
}
}
#[link_args="-framework CoreFoundation"]
#[nolink]
#[link(name = "CoreFoundation", kind = "framework")]
extern {
/*
* CFBase.h
+1 -5
View File
@@ -25,7 +25,6 @@ pub struct CFBoolean {
}
impl Drop for CFBoolean {
#[fixed_stack_segment]
fn drop(&mut self) {
unsafe {
CFRelease(self.as_CFTypeRef())
@@ -44,7 +43,6 @@ impl TCFType<CFBooleanRef> for CFBoolean {
}
}
#[fixed_stack_segment]
#[inline]
fn type_id(_: Option<CFBoolean>) -> CFTypeID {
unsafe {
@@ -67,13 +65,11 @@ impl CFBoolean {
}
}
#[link_args="-framework CoreFoundation"]
#[nolink]
#[link(name = "CoreFoundation", kind = "framework")]
extern {
static kCFBooleanTrue: CFBooleanRef;
static kCFBooleanFalse: CFBooleanRef;
fn CFBooleanGetValue(boolean: CFBooleanRef) -> Boolean;
fn CFBooleanGetTypeID() -> CFTypeID;
}
+3 -15
View File
@@ -9,11 +9,10 @@
//! Core Foundation byte buffers.
use base::{CFAllocatorRef, CFIndex, CFIndexConvertible, CFRange, CFRelease, CFTypeID, TCFType};
use base::{CFAllocatorRef, CFIndex, CFIndexConvertible, CFRelease, CFTypeID, TCFType};
use base::{kCFAllocatorDefault};
use std::cast;
use std::vec;
struct __CFData;
@@ -27,7 +26,6 @@ pub struct CFData {
}
impl Drop for CFData {
#[fixed_stack_segment]
fn drop(&mut self) {
unsafe {
CFRelease(self.as_CFTypeRef())
@@ -46,7 +44,6 @@ impl TCFType<CFDataRef> for CFData {
}
}
#[fixed_stack_segment]
#[inline]
fn type_id(_: Option<CFData>) -> CFTypeID {
unsafe {
@@ -56,11 +53,10 @@ impl TCFType<CFDataRef> for CFData {
}
impl CFData {
#[fixed_stack_segment]
pub fn from_buffer(buffer: &[u8]) -> CFData {
unsafe {
let data_ref = CFDataCreate(kCFAllocatorDefault,
vec::raw::to_ptr(buffer),
buffer.as_ptr(),
buffer.len().to_CFIndex());
TCFType::wrap_under_create_rule(data_ref)
}
@@ -68,7 +64,6 @@ impl CFData {
/// Returns a pointer to the underlying bytes in this data. Note that this byte buffer is
/// read-only.
#[fixed_stack_segment]
#[inline]
pub fn bytes<'a>(&'a self) -> &'a [u8] {
unsafe {
@@ -77,7 +72,6 @@ impl CFData {
}
/// Returns the length of this byte buffer.
#[fixed_stack_segment]
#[inline]
pub fn len(&self) -> CFIndex {
unsafe {
@@ -86,8 +80,7 @@ impl CFData {
}
}
#[link_args="-framework CoreFoundation"]
#[nolink]
#[link(name = "CoreFoundation", kind = "framework")]
extern {
/*
* CFData.h
@@ -95,13 +88,8 @@ extern {
fn CFDataCreate(allocator: CFAllocatorRef,
bytes: *u8, length: CFIndex) -> CFDataRef;
fn CFDataCreateCopy(allocator: CFAllocatorRef, theData: CFDataRef) -> CFDataRef;
fn CFDataCreateWithBytesNoCopy(allocator: CFAllocatorRef,
bytes: *u8, length: CFIndex,
bytesDeallocator: CFAllocatorRef) -> CFDataRef;
//fn CFDataFind
fn CFDataGetBytePtr(theData: CFDataRef) -> *u8;
fn CFDataGetBytes(theData: CFDataRef, range: CFRange, buffer: *u8);
fn CFDataGetLength(theData: CFDataRef) -> CFIndex;
fn CFDataGetTypeID() -> CFTypeID;
+3 -20
View File
@@ -53,7 +53,6 @@ pub struct CFDictionary {
}
impl Drop for CFDictionary {
#[fixed_stack_segment]
fn drop(&mut self) {
unsafe {
CFRelease(self.as_CFTypeRef())
@@ -72,7 +71,6 @@ impl TCFType<CFDictionaryRef> for CFDictionary {
}
}
#[fixed_stack_segment]
#[inline]
fn type_id(_: Option<CFDictionary>) -> CFTypeID {
unsafe {
@@ -82,7 +80,6 @@ impl TCFType<CFDictionaryRef> for CFDictionary {
}
impl CFDictionary {
#[fixed_stack_segment]
pub fn from_CFType_pairs(pairs: &[(CFType, CFType)]) -> CFDictionary {
let (keys, values) =
vec::unzip(pairs.iter()
@@ -90,8 +87,8 @@ impl CFDictionary {
value.as_CFTypeRef())));
unsafe {
let dictionary_ref = CFDictionaryCreate(kCFAllocatorDefault,
cast::transmute(vec::raw::to_ptr(keys)),
cast::transmute(vec::raw::to_ptr(values)),
cast::transmute(keys.as_ptr()),
cast::transmute(values.as_ptr()),
keys.len().to_CFIndex(),
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
@@ -99,7 +96,6 @@ impl CFDictionary {
}
}
#[fixed_stack_segment]
#[inline]
pub fn len(&self) -> uint {
unsafe {
@@ -112,7 +108,6 @@ impl CFDictionary {
self.len() == 0
}
#[fixed_stack_segment]
#[inline]
pub fn contains_key(&self, key: *c_void) -> bool {
unsafe {
@@ -120,7 +115,6 @@ impl CFDictionary {
}
}
#[fixed_stack_segment]
#[inline]
pub fn find(&self, key: *c_void) -> Option<*c_void> {
unsafe {
@@ -150,8 +144,7 @@ impl CFDictionary {
}
}
#[link_args="-framework CoreFoundation"]
#[nolink]
#[link(name = "CoreFoundation", kind = "framework")]
extern {
/*
* CFDictionary.h
@@ -160,23 +153,13 @@ extern {
static kCFTypeDictionaryKeyCallBacks: CFDictionaryKeyCallBacks;
static kCFTypeDictionaryValueCallBacks: CFDictionaryValueCallBacks;
fn CFDictionaryApplyFunction(theDict: CFDictionaryRef, applier: CFDictionaryApplierFunction,
context: *c_void);
fn CFDictionaryContainsKey(theDict: CFDictionaryRef, key: *c_void) -> Boolean;
fn CFDictionaryContainsValue(theDict: CFDictionaryRef, value: *c_void) -> Boolean;
fn CFDictionaryCreate(allocator: CFAllocatorRef, keys: **c_void, values: **c_void,
numValues: CFIndex, keyCallBacks: *CFDictionaryKeyCallBacks,
valueCallBacks: *CFDictionaryValueCallBacks)
-> CFDictionaryRef;
fn CFDictionaryCreateCopy(allocator: CFAllocatorRef,
theDict: CFDictionaryRef)
-> CFDictionaryRef;
fn CFDictionaryGetCount(theDict: CFDictionaryRef) -> CFIndex;
fn CFDictionaryGetCountOfKey(theDict: CFDictionaryRef, key: *c_void) -> CFIndex;
fn CFDictionaryGetCountOfValue(theDict: CFDictionaryRef, value: *c_void) -> CFIndex;
fn CFDictionaryGetKeysAndValues(theDict: CFDictionaryRef, keys: **c_void, values: **c_void);
fn CFDictionaryGetTypeID() -> CFTypeID;
fn CFDictionaryGetValue(theDict: CFDictionaryRef, key: *c_void) -> *c_void;
fn CFDictionaryGetValueIfPresent(theDict: CFDictionaryRef, key: *c_void, value: *mut *c_void)
-> Boolean;
}
+1 -1
View File
@@ -7,7 +7,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#[link(name = "core_foundation", vers = "0.1")];
#[crate_id = "github.com/mozilla-servo/rust-core-foundation#core_foundation:0.1"];
extern mod std;
+17 -31
View File
@@ -11,7 +11,7 @@
#[allow(non_uppercase_statics)];
use base::{Boolean, CFAllocatorRef, CFRelease, CFTypeID, TCFType, kCFAllocatorDefault};
use base::{CFAllocatorRef, CFRelease, CFTypeID, TCFType, kCFAllocatorDefault};
use std::cast;
use std::libc::c_void;
@@ -19,23 +19,23 @@ use std::libc::c_void;
pub type CFNumberType = u32;
// members of enum CFNumberType
static kCFNumberSInt8Type: CFNumberType = 1;
static kCFNumberSInt16Type: CFNumberType = 2;
static kCFNumberSInt32Type: CFNumberType = 3;
// static kCFNumberSInt8Type: CFNumberType = 1;
// static kCFNumberSInt16Type: CFNumberType = 2;
// static kCFNumberSInt32Type: CFNumberType = 3;
static kCFNumberSInt64Type: CFNumberType = 4;
static kCFNumberFloat32Type: CFNumberType = 5;
// static kCFNumberFloat32Type: CFNumberType = 5;
static kCFNumberFloat64Type: CFNumberType = 6;
static kCFNumberCharType: CFNumberType = 7;
static kCFNumberShortType: CFNumberType = 8;
static kCFNumberIntType: CFNumberType = 9;
static kCFNumberLongType: CFNumberType = 10;
static kCFNumberLongLongType: CFNumberType = 11;
static kCFNumberFloatType: CFNumberType = 12;
static kCFNumberDoubleType: CFNumberType = 13;
static kCFNumberCFIndexType: CFNumberType = 14;
static kCFNumberNSIntegerType: CFNumberType = 15;
static kCFNumberCGFloatType: CFNumberType = 16;
static kCFNumberMaxType: CFNumberType = 16;
// static kCFNumberCharType: CFNumberType = 7;
// static kCFNumberShortType: CFNumberType = 8;
// static kCFNumberIntType: CFNumberType = 9;
// static kCFNumberLongType: CFNumberType = 10;
// static kCFNumberLongLongType: CFNumberType = 11;
// static kCFNumberFloatType: CFNumberType = 12;
// static kCFNumberDoubleType: CFNumberType = 13;
// static kCFNumberCFIndexType: CFNumberType = 14;
// static kCFNumberNSIntegerType: CFNumberType = 15;
// static kCFNumberCGFloatType: CFNumberType = 16;
// static kCFNumberMaxType: CFNumberType = 16;
struct __CFNumber;
@@ -49,7 +49,6 @@ pub struct CFNumber {
}
impl Drop for CFNumber {
#[fixed_stack_segment]
fn drop(&mut self) {
unsafe {
CFRelease(self.as_CFTypeRef())
@@ -68,7 +67,6 @@ impl TCFType<CFNumberRef> for CFNumber {
}
}
#[fixed_stack_segment]
#[inline]
fn type_id(_: Option<CFNumber>) -> CFTypeID {
unsafe {
@@ -79,7 +77,6 @@ impl TCFType<CFNumberRef> for CFNumber {
// TODO(pcwalton): Floating point.
impl ToPrimitive for CFNumber {
#[fixed_stack_segment]
#[inline]
fn to_i64(&self) -> Option<i64> {
unsafe {
@@ -90,14 +87,12 @@ impl ToPrimitive for CFNumber {
}
}
#[fixed_stack_segment]
#[inline]
fn to_u64(&self) -> Option<u64> {
// CFNumber does not support unsigned 64-bit values.
None
}
#[fixed_stack_segment]
#[inline]
fn to_f64(&self) -> Option<f64> {
unsafe {
@@ -111,7 +106,6 @@ impl ToPrimitive for CFNumber {
// TODO(pcwalton): Floating point.
impl FromPrimitive for CFNumber {
#[fixed_stack_segment]
#[inline]
fn from_i64(value: i64) -> Option<CFNumber> {
unsafe {
@@ -122,14 +116,12 @@ impl FromPrimitive for CFNumber {
}
}
#[fixed_stack_segment]
#[inline]
fn from_u64(_: u64) -> Option<CFNumber> {
// CFNumber does not support unsigned 64-bit values.
None
}
#[fixed_stack_segment]
#[inline]
fn from_f64(value: f64) -> Option<CFNumber> {
unsafe {
@@ -146,23 +138,17 @@ pub fn number(value: i64) -> CFNumber {
FromPrimitive::from_i64(value).unwrap()
}
#[link_args="-framework CoreFoundation"]
#[nolink]
#[link(name = "CoreFoundation", kind = "framework")]
extern {
/*
* CFNumber.h
*/
static kCFNumberNaN: CFNumberRef;
static kCFNumberNegativeInfinity: CFNumberRef;
static kCFNumberPositiveInfinity: CFNumberRef;
fn CFNumberCreate(allocator: CFAllocatorRef, theType: CFNumberType, valuePtr: *c_void)
-> CFNumberRef;
//fn CFNumberGetByteSize
fn CFNumberGetType(number: CFNumberRef) -> CFNumberType;
fn CFNumberGetValue(number: CFNumberRef, theType: CFNumberType, valuePtr: *mut c_void) -> bool;
fn CFNumberIsFloatType(number: CFNumberRef) -> Boolean;
//fn CFNumberCompare
fn CFNumberGetTypeID() -> CFTypeID;
}
+3 -18
View File
@@ -9,12 +9,11 @@
//! An immutable bag of elements.
use base::{Boolean, CFAllocatorRef, CFIndex, CFIndexConvertible, CFRelease, CFType, CFTypeID};
use base::{CFAllocatorRef, CFIndex, CFIndexConvertible, CFRelease, CFType, CFTypeID};
use base::{TCFType, kCFAllocatorDefault};
use std::cast;
use std::libc::c_void;
use std::vec;
pub type CFSetRetainCallBack = *u8;
pub type CFSetReleaseCallBack = *u8;
@@ -43,7 +42,6 @@ pub struct CFSet {
}
impl Drop for CFSet {
#[fixed_stack_segment]
fn drop(&mut self) {
unsafe {
CFRelease(self.as_CFTypeRef())
@@ -62,7 +60,6 @@ impl TCFType<CFSetRef> for CFSet {
}
}
#[fixed_stack_segment]
#[inline]
fn type_id(_: Option<CFSet>) -> CFTypeID {
unsafe {
@@ -73,12 +70,11 @@ impl TCFType<CFSetRef> for CFSet {
impl CFSet {
/// Creates a new set from a list of `CFType` instances.
#[fixed_stack_segment]
pub fn from_slice(elems: &[CFType]) -> CFSet {
unsafe {
let elems = elems.map(|elem| elem.as_CFTypeRef());
let set_ref = CFSetCreate(kCFAllocatorDefault,
cast::transmute(vec::raw::to_ptr(elems)),
cast::transmute(elems.as_ptr()),
elems.len().to_CFIndex(),
&kCFTypeSetCallBacks);
TCFType::wrap_under_create_rule(set_ref)
@@ -86,28 +82,17 @@ impl CFSet {
}
}
#[link_args="-framework CoreFoundation"]
#[nolink]
#[link(name = "CoreFoundation", kind = "framework")]
extern {
/*
* CFSet.h
*/
static kCFTypeSetCallBacks: CFSetCallBacks;
static kCFTypeCopyStringSetCallBacks: CFSetCallBacks;
/* Creating Sets */
fn CFSetCreate(allocator: CFAllocatorRef, values: **c_void, numValues: CFIndex,
callBacks: *CFSetCallBacks) -> CFSetRef;
fn CFSetCreateCopy(allocator: CFAllocatorRef, theSet: CFSetRef) -> CFSetRef;
/* Examining a Set */
fn CFSetContainsValue(theSet: CFSetRef, value: *c_void) -> Boolean;
fn CFSetGetCount(theSet: CFSetRef) -> CFIndex;
fn CFSetGetCountOfValue(theSet: CFSetRef, value: *c_void) -> CFIndex;
fn CFSetGetValue(theSet: CFSetRef, value: *c_void) -> *c_void;
fn CFSetGetValueIfPresent(theSet: CFSetRef, candidate: *c_void, value: **c_void) -> Boolean;
fn CFSetGetValues(theSet: CFSetRef, values: **c_void);
/* Applying a Function to Set Members */
//fn CFSetApplyFunction
+165 -177
View File
@@ -24,35 +24,35 @@ pub type UniChar = libc::c_ushort;
// CFString.h
pub type CFStringCompareFlags = CFOptionFlags;
static kCFCompareCaseInsensitive: CFStringCompareFlags = 1;
static kCFCompareBackwards: CFStringCompareFlags = 4;
static kCFCompareAnchored: CFStringCompareFlags = 8;
static kCFCompareNonliteral: CFStringCompareFlags = 16;
static kCFCompareLocalized: CFStringCompareFlags = 32;
static kCFCompareNumerically: CFStringCompareFlags = 64;
static kCFCompareDiacriticInsensitive: CFStringCompareFlags = 128;
static kCFCompareWidthInsensitive: CFStringCompareFlags = 256;
static kCFCompareForcedOrdering: CFStringCompareFlags = 512;
//static kCFCompareCaseInsensitive: CFStringCompareFlags = 1;
//static kCFCompareBackwards: CFStringCompareFlags = 4;
//static kCFCompareAnchored: CFStringCompareFlags = 8;
//static kCFCompareNonliteral: CFStringCompareFlags = 16;
//static kCFCompareLocalized: CFStringCompareFlags = 32;
//static kCFCompareNumerically: CFStringCompareFlags = 64;
//static kCFCompareDiacriticInsensitive: CFStringCompareFlags = 128;
//static kCFCompareWidthInsensitive: CFStringCompareFlags = 256;
//static kCFCompareForcedOrdering: CFStringCompareFlags = 512;
pub type CFStringEncoding = u32;
// OS X built-in encodings.
static kCFStringEncodingMacRoman: CFStringEncoding = 0;
static kCFStringEncodingWindowsLatin1: CFStringEncoding = 0x0500;
static kCFStringEncodingISOLatin1: CFStringEncoding = 0x0201;
static kCFStringEncodingNextStepLatin: CFStringEncoding = 0x0B01;
static kCFStringEncodingASCII: CFStringEncoding = 0x0600;
static kCFStringEncodingUnicode: CFStringEncoding = 0x0100;
//static kCFStringEncodingMacRoman: CFStringEncoding = 0;
//static kCFStringEncodingWindowsLatin1: CFStringEncoding = 0x0500;
//static kCFStringEncodingISOLatin1: CFStringEncoding = 0x0201;
//static kCFStringEncodingNextStepLatin: CFStringEncoding = 0x0B01;
//static kCFStringEncodingASCII: CFStringEncoding = 0x0600;
//static kCFStringEncodingUnicode: CFStringEncoding = 0x0100;
static kCFStringEncodingUTF8: CFStringEncoding = 0x08000100;
static kCFStringEncodingNonLossyASCII: CFStringEncoding = 0x0BFF;
//static kCFStringEncodingNonLossyASCII: CFStringEncoding = 0x0BFF;
static kCFStringEncodingUTF16: CFStringEncoding = 0x0100;
static kCFStringEncodingUTF16BE: CFStringEncoding = 0x10000100;
static kCFStringEncodingUTF16LE: CFStringEncoding = 0x14000100;
static kCFStringEncodingUTF32: CFStringEncoding = 0x0c000100;
static kCFStringEncodingUTF32BE: CFStringEncoding = 0x18000100;
static kCFStringEncodingUTF32LE: CFStringEncoding = 0x1c000100;
//static kCFStringEncodingUTF16: CFStringEncoding = 0x0100;
//static kCFStringEncodingUTF16BE: CFStringEncoding = 0x10000100;
//static kCFStringEncodingUTF16LE: CFStringEncoding = 0x14000100;
//static kCFStringEncodingUTF32: CFStringEncoding = 0x0c000100;
//static kCFStringEncodingUTF32BE: CFStringEncoding = 0x18000100;
//static kCFStringEncodingUTF32LE: CFStringEncoding = 0x1c000100;
// CFStringEncodingExt.h
@@ -61,139 +61,139 @@ type CFStringEncodings = CFIndex;
// External encodings, except those defined above.
// Defined above: kCFStringEncodingMacRoman = 0
static kCFStringEncodingMacJapanese: CFStringEncoding = 1;
static kCFStringEncodingMacChineseTrad: CFStringEncoding = 2;
static kCFStringEncodingMacKorean: CFStringEncoding = 3;
static kCFStringEncodingMacArabic: CFStringEncoding = 4;
static kCFStringEncodingMacHebrew: CFStringEncoding = 5;
static kCFStringEncodingMacGreek: CFStringEncoding = 6;
static kCFStringEncodingMacCyrillic: CFStringEncoding = 7;
static kCFStringEncodingMacDevanagari: CFStringEncoding = 9;
static kCFStringEncodingMacGurmukhi: CFStringEncoding = 10;
static kCFStringEncodingMacGujarati: CFStringEncoding = 11;
static kCFStringEncodingMacOriya: CFStringEncoding = 12;
static kCFStringEncodingMacBengali: CFStringEncoding = 13;
static kCFStringEncodingMacTamil: CFStringEncoding = 14;
static kCFStringEncodingMacTelugu: CFStringEncoding = 15;
static kCFStringEncodingMacKannada: CFStringEncoding = 16;
static kCFStringEncodingMacMalayalam: CFStringEncoding = 17;
static kCFStringEncodingMacSinhalese: CFStringEncoding = 18;
static kCFStringEncodingMacBurmese: CFStringEncoding = 19;
static kCFStringEncodingMacKhmer: CFStringEncoding = 20;
static kCFStringEncodingMacThai: CFStringEncoding = 21;
static kCFStringEncodingMacLaotian: CFStringEncoding = 22;
static kCFStringEncodingMacGeorgian: CFStringEncoding = 23;
static kCFStringEncodingMacArmenian: CFStringEncoding = 24;
static kCFStringEncodingMacChineseSimp: CFStringEncoding = 25;
static kCFStringEncodingMacTibetan: CFStringEncoding = 26;
static kCFStringEncodingMacMongolian: CFStringEncoding = 27;
static kCFStringEncodingMacEthiopic: CFStringEncoding = 28;
static kCFStringEncodingMacCentralEurRoman: CFStringEncoding = 29;
static kCFStringEncodingMacVietnamese: CFStringEncoding = 30;
static kCFStringEncodingMacExtArabic: CFStringEncoding = 31;
static kCFStringEncodingMacSymbol: CFStringEncoding = 33;
static kCFStringEncodingMacDingbats: CFStringEncoding = 34;
static kCFStringEncodingMacTurkish: CFStringEncoding = 35;
static kCFStringEncodingMacCroatian: CFStringEncoding = 36;
static kCFStringEncodingMacIcelandic: CFStringEncoding = 37;
static kCFStringEncodingMacRomanian: CFStringEncoding = 38;
static kCFStringEncodingMacCeltic: CFStringEncoding = 39;
static kCFStringEncodingMacGaelic: CFStringEncoding = 40;
static kCFStringEncodingMacFarsi: CFStringEncoding = 0x8C;
static kCFStringEncodingMacUkrainian: CFStringEncoding = 0x98;
static kCFStringEncodingMacInuit: CFStringEncoding = 0xEC;
static kCFStringEncodingMacVT100: CFStringEncoding = 0xFC;
static kCFStringEncodingMacHFS: CFStringEncoding = 0xFF;
//static kCFStringEncodingMacJapanese: CFStringEncoding = 1;
//static kCFStringEncodingMacChineseTrad: CFStringEncoding = 2;
//static kCFStringEncodingMacKorean: CFStringEncoding = 3;
//static kCFStringEncodingMacArabic: CFStringEncoding = 4;
//static kCFStringEncodingMacHebrew: CFStringEncoding = 5;
//static kCFStringEncodingMacGreek: CFStringEncoding = 6;
//static kCFStringEncodingMacCyrillic: CFStringEncoding = 7;
//static kCFStringEncodingMacDevanagari: CFStringEncoding = 9;
//static kCFStringEncodingMacGurmukhi: CFStringEncoding = 10;
//static kCFStringEncodingMacGujarati: CFStringEncoding = 11;
//static kCFStringEncodingMacOriya: CFStringEncoding = 12;
//static kCFStringEncodingMacBengali: CFStringEncoding = 13;
//static kCFStringEncodingMacTamil: CFStringEncoding = 14;
//static kCFStringEncodingMacTelugu: CFStringEncoding = 15;
//static kCFStringEncodingMacKannada: CFStringEncoding = 16;
//static kCFStringEncodingMacMalayalam: CFStringEncoding = 17;
//static kCFStringEncodingMacSinhalese: CFStringEncoding = 18;
//static kCFStringEncodingMacBurmese: CFStringEncoding = 19;
//static kCFStringEncodingMacKhmer: CFStringEncoding = 20;
//static kCFStringEncodingMacThai: CFStringEncoding = 21;
//static kCFStringEncodingMacLaotian: CFStringEncoding = 22;
//static kCFStringEncodingMacGeorgian: CFStringEncoding = 23;
//static kCFStringEncodingMacArmenian: CFStringEncoding = 24;
//static kCFStringEncodingMacChineseSimp: CFStringEncoding = 25;
//static kCFStringEncodingMacTibetan: CFStringEncoding = 26;
//static kCFStringEncodingMacMongolian: CFStringEncoding = 27;
//static kCFStringEncodingMacEthiopic: CFStringEncoding = 28;
//static kCFStringEncodingMacCentralEurRoman: CFStringEncoding = 29;
//static kCFStringEncodingMacVietnamese: CFStringEncoding = 30;
//static kCFStringEncodingMacExtArabic: CFStringEncoding = 31;
//static kCFStringEncodingMacSymbol: CFStringEncoding = 33;
//static kCFStringEncodingMacDingbats: CFStringEncoding = 34;
//static kCFStringEncodingMacTurkish: CFStringEncoding = 35;
//static kCFStringEncodingMacCroatian: CFStringEncoding = 36;
//static kCFStringEncodingMacIcelandic: CFStringEncoding = 37;
//static kCFStringEncodingMacRomanian: CFStringEncoding = 38;
//static kCFStringEncodingMacCeltic: CFStringEncoding = 39;
//static kCFStringEncodingMacGaelic: CFStringEncoding = 40;
//static kCFStringEncodingMacFarsi: CFStringEncoding = 0x8C;
//static kCFStringEncodingMacUkrainian: CFStringEncoding = 0x98;
//static kCFStringEncodingMacInuit: CFStringEncoding = 0xEC;
//static kCFStringEncodingMacVT100: CFStringEncoding = 0xFC;
//static kCFStringEncodingMacHFS: CFStringEncoding = 0xFF;
// Defined above: kCFStringEncodingISOLatin1 = 0x0201
static kCFStringEncodingISOLatin2: CFStringEncoding = 0x0202;
static kCFStringEncodingISOLatin3: CFStringEncoding = 0x0203;
static kCFStringEncodingISOLatin4: CFStringEncoding = 0x0204;
static kCFStringEncodingISOLatinCyrillic: CFStringEncoding = 0x0205;
static kCFStringEncodingISOLatinArabic: CFStringEncoding = 0x0206;
static kCFStringEncodingISOLatinGreek: CFStringEncoding = 0x0207;
static kCFStringEncodingISOLatinHebrew: CFStringEncoding = 0x0208;
static kCFStringEncodingISOLatin5: CFStringEncoding = 0x0209;
static kCFStringEncodingISOLatin6: CFStringEncoding = 0x020A;
static kCFStringEncodingISOLatinThai: CFStringEncoding = 0x020B;
static kCFStringEncodingISOLatin7: CFStringEncoding = 0x020D;
static kCFStringEncodingISOLatin8: CFStringEncoding = 0x020E;
static kCFStringEncodingISOLatin9: CFStringEncoding = 0x020F;
static kCFStringEncodingISOLatin10: CFStringEncoding = 0x0210;
static kCFStringEncodingDOSLatinUS: CFStringEncoding = 0x0400;
static kCFStringEncodingDOSGreek: CFStringEncoding = 0x0405;
static kCFStringEncodingDOSBalticRim: CFStringEncoding = 0x0406;
static kCFStringEncodingDOSLatin1: CFStringEncoding = 0x0410;
static kCFStringEncodingDOSGreek1: CFStringEncoding = 0x0411;
static kCFStringEncodingDOSLatin2: CFStringEncoding = 0x0412;
static kCFStringEncodingDOSCyrillic: CFStringEncoding = 0x0413;
static kCFStringEncodingDOSTurkish: CFStringEncoding = 0x0414;
static kCFStringEncodingDOSPortuguese: CFStringEncoding = 0x0415;
static kCFStringEncodingDOSIcelandic: CFStringEncoding = 0x0416;
static kCFStringEncodingDOSHebrew: CFStringEncoding = 0x0417;
static kCFStringEncodingDOSCanadianFrench: CFStringEncoding = 0x0418;
static kCFStringEncodingDOSArabic: CFStringEncoding = 0x0419;
static kCFStringEncodingDOSNordic: CFStringEncoding = 0x041A;
static kCFStringEncodingDOSRussian: CFStringEncoding = 0x041B;
static kCFStringEncodingDOSGreek2: CFStringEncoding = 0x041C;
static kCFStringEncodingDOSThai: CFStringEncoding = 0x041D;
static kCFStringEncodingDOSJapanese: CFStringEncoding = 0x0420;
static kCFStringEncodingDOSChineseSimplif: CFStringEncoding = 0x0421;
static kCFStringEncodingDOSKorean: CFStringEncoding = 0x0422;
static kCFStringEncodingDOSChineseTrad: CFStringEncoding = 0x0423;
//static kCFStringEncodingISOLatin2: CFStringEncoding = 0x0202;
//static kCFStringEncodingISOLatin3: CFStringEncoding = 0x0203;
//static kCFStringEncodingISOLatin4: CFStringEncoding = 0x0204;
//static kCFStringEncodingISOLatinCyrillic: CFStringEncoding = 0x0205;
//static kCFStringEncodingISOLatinArabic: CFStringEncoding = 0x0206;
//static kCFStringEncodingISOLatinGreek: CFStringEncoding = 0x0207;
//static kCFStringEncodingISOLatinHebrew: CFStringEncoding = 0x0208;
//static kCFStringEncodingISOLatin5: CFStringEncoding = 0x0209;
//static kCFStringEncodingISOLatin6: CFStringEncoding = 0x020A;
//static kCFStringEncodingISOLatinThai: CFStringEncoding = 0x020B;
//static kCFStringEncodingISOLatin7: CFStringEncoding = 0x020D;
//static kCFStringEncodingISOLatin8: CFStringEncoding = 0x020E;
//static kCFStringEncodingISOLatin9: CFStringEncoding = 0x020F;
//static kCFStringEncodingISOLatin10: CFStringEncoding = 0x0210;
//static kCFStringEncodingDOSLatinUS: CFStringEncoding = 0x0400;
//static kCFStringEncodingDOSGreek: CFStringEncoding = 0x0405;
//static kCFStringEncodingDOSBalticRim: CFStringEncoding = 0x0406;
//static kCFStringEncodingDOSLatin1: CFStringEncoding = 0x0410;
//static kCFStringEncodingDOSGreek1: CFStringEncoding = 0x0411;
//static kCFStringEncodingDOSLatin2: CFStringEncoding = 0x0412;
//static kCFStringEncodingDOSCyrillic: CFStringEncoding = 0x0413;
//static kCFStringEncodingDOSTurkish: CFStringEncoding = 0x0414;
//static kCFStringEncodingDOSPortuguese: CFStringEncoding = 0x0415;
//static kCFStringEncodingDOSIcelandic: CFStringEncoding = 0x0416;
//static kCFStringEncodingDOSHebrew: CFStringEncoding = 0x0417;
//static kCFStringEncodingDOSCanadianFrench: CFStringEncoding = 0x0418;
//static kCFStringEncodingDOSArabic: CFStringEncoding = 0x0419;
//static kCFStringEncodingDOSNordic: CFStringEncoding = 0x041A;
//static kCFStringEncodingDOSRussian: CFStringEncoding = 0x041B;
//static kCFStringEncodingDOSGreek2: CFStringEncoding = 0x041C;
//static kCFStringEncodingDOSThai: CFStringEncoding = 0x041D;
//static kCFStringEncodingDOSJapanese: CFStringEncoding = 0x0420;
//static kCFStringEncodingDOSChineseSimplif: CFStringEncoding = 0x0421;
//static kCFStringEncodingDOSKorean: CFStringEncoding = 0x0422;
//static kCFStringEncodingDOSChineseTrad: CFStringEncoding = 0x0423;
// Defined above: kCFStringEncodingWindowsLatin1 = 0x0500
static kCFStringEncodingWindowsLatin2: CFStringEncoding = 0x0501;
static kCFStringEncodingWindowsCyrillic: CFStringEncoding = 0x0502;
static kCFStringEncodingWindowsGreek: CFStringEncoding = 0x0503;
static kCFStringEncodingWindowsLatin5: CFStringEncoding = 0x0504;
static kCFStringEncodingWindowsHebrew: CFStringEncoding = 0x0505;
static kCFStringEncodingWindowsArabic: CFStringEncoding = 0x0506;
static kCFStringEncodingWindowsBalticRim: CFStringEncoding = 0x0507;
static kCFStringEncodingWindowsVietnamese: CFStringEncoding = 0x0508;
static kCFStringEncodingWindowsKoreanJohab: CFStringEncoding = 0x0510;
//static kCFStringEncodingWindowsLatin2: CFStringEncoding = 0x0501;
//static kCFStringEncodingWindowsCyrillic: CFStringEncoding = 0x0502;
//static kCFStringEncodingWindowsGreek: CFStringEncoding = 0x0503;
//static kCFStringEncodingWindowsLatin5: CFStringEncoding = 0x0504;
//static kCFStringEncodingWindowsHebrew: CFStringEncoding = 0x0505;
//static kCFStringEncodingWindowsArabic: CFStringEncoding = 0x0506;
//static kCFStringEncodingWindowsBalticRim: CFStringEncoding = 0x0507;
//static kCFStringEncodingWindowsVietnamese: CFStringEncoding = 0x0508;
//static kCFStringEncodingWindowsKoreanJohab: CFStringEncoding = 0x0510;
// Defined above: kCFStringEncodingASCII = 0x0600
static kCFStringEncodingANSEL: CFStringEncoding = 0x0601;
static kCFStringEncodingJIS_X0201_76: CFStringEncoding = 0x0620;
static kCFStringEncodingJIS_X0208_83: CFStringEncoding = 0x0621;
static kCFStringEncodingJIS_X0208_90: CFStringEncoding = 0x0622;
static kCFStringEncodingJIS_X0212_90: CFStringEncoding = 0x0623;
static kCFStringEncodingJIS_C6226_78: CFStringEncoding = 0x0624;
static kCFStringEncodingShiftJIS_X0213: CFStringEncoding = 0x0628;
static kCFStringEncodingShiftJIS_X0213_MenKuTen: CFStringEncoding = 0x0629;
static kCFStringEncodingGB_2312_80: CFStringEncoding = 0x0630;
static kCFStringEncodingGBK_95: CFStringEncoding = 0x0631;
static kCFStringEncodingGB_18030_2000: CFStringEncoding = 0x0632;
static kCFStringEncodingKSC_5601_87: CFStringEncoding = 0x0640;
static kCFStringEncodingKSC_5601_92_Johab: CFStringEncoding = 0x0641;
static kCFStringEncodingCNS_11643_92_P1: CFStringEncoding = 0x0651;
static kCFStringEncodingCNS_11643_92_P2: CFStringEncoding = 0x0652;
static kCFStringEncodingCNS_11643_92_P3: CFStringEncoding = 0x0653;
static kCFStringEncodingISO_2022_JP: CFStringEncoding = 0x0820;
static kCFStringEncodingISO_2022_JP_2: CFStringEncoding = 0x0821;
static kCFStringEncodingISO_2022_JP_1: CFStringEncoding = 0x0822;
static kCFStringEncodingISO_2022_JP_3: CFStringEncoding = 0x0823;
static kCFStringEncodingISO_2022_CN: CFStringEncoding = 0x0830;
static kCFStringEncodingISO_2022_CN_EXT: CFStringEncoding = 0x0831;
static kCFStringEncodingISO_2022_KR: CFStringEncoding = 0x0840;
static kCFStringEncodingEUC_JP: CFStringEncoding = 0x0920;
static kCFStringEncodingEUC_CN: CFStringEncoding = 0x0930;
static kCFStringEncodingEUC_TW: CFStringEncoding = 0x0931;
static kCFStringEncodingEUC_KR: CFStringEncoding = 0x0940;
static kCFStringEncodingShiftJIS: CFStringEncoding = 0x0A01;
static kCFStringEncodingKOI8_R: CFStringEncoding = 0x0A02;
static kCFStringEncodingBig5: CFStringEncoding = 0x0A03;
static kCFStringEncodingMacRomanLatin1: CFStringEncoding = 0x0A04;
static kCFStringEncodingHZ_GB_2312: CFStringEncoding = 0x0A05;
static kCFStringEncodingBig5_HKSCS_1999: CFStringEncoding = 0x0A06;
static kCFStringEncodingVISCII: CFStringEncoding = 0x0A07;
static kCFStringEncodingKOI8_U: CFStringEncoding = 0x0A08;
static kCFStringEncodingBig5_E: CFStringEncoding = 0x0A09;
//static kCFStringEncodingANSEL: CFStringEncoding = 0x0601;
//static kCFStringEncodingJIS_X0201_76: CFStringEncoding = 0x0620;
//static kCFStringEncodingJIS_X0208_83: CFStringEncoding = 0x0621;
//static kCFStringEncodingJIS_X0208_90: CFStringEncoding = 0x0622;
//static kCFStringEncodingJIS_X0212_90: CFStringEncoding = 0x0623;
//static kCFStringEncodingJIS_C6226_78: CFStringEncoding = 0x0624;
//static kCFStringEncodingShiftJIS_X0213: CFStringEncoding = 0x0628;
//static kCFStringEncodingShiftJIS_X0213_MenKuTen: CFStringEncoding = 0x0629;
//static kCFStringEncodingGB_2312_80: CFStringEncoding = 0x0630;
//static kCFStringEncodingGBK_95: CFStringEncoding = 0x0631;
//static kCFStringEncodingGB_18030_2000: CFStringEncoding = 0x0632;
//static kCFStringEncodingKSC_5601_87: CFStringEncoding = 0x0640;
//static kCFStringEncodingKSC_5601_92_Johab: CFStringEncoding = 0x0641;
//static kCFStringEncodingCNS_11643_92_P1: CFStringEncoding = 0x0651;
//static kCFStringEncodingCNS_11643_92_P2: CFStringEncoding = 0x0652;
//static kCFStringEncodingCNS_11643_92_P3: CFStringEncoding = 0x0653;
//static kCFStringEncodingISO_2022_JP: CFStringEncoding = 0x0820;
//static kCFStringEncodingISO_2022_JP_2: CFStringEncoding = 0x0821;
//static kCFStringEncodingISO_2022_JP_1: CFStringEncoding = 0x0822;
//static kCFStringEncodingISO_2022_JP_3: CFStringEncoding = 0x0823;
//static kCFStringEncodingISO_2022_CN: CFStringEncoding = 0x0830;
//static kCFStringEncodingISO_2022_CN_EXT: CFStringEncoding = 0x0831;
//static kCFStringEncodingISO_2022_KR: CFStringEncoding = 0x0840;
//static kCFStringEncodingEUC_JP: CFStringEncoding = 0x0920;
//static kCFStringEncodingEUC_CN: CFStringEncoding = 0x0930;
//static kCFStringEncodingEUC_TW: CFStringEncoding = 0x0931;
//static kCFStringEncodingEUC_KR: CFStringEncoding = 0x0940;
//static kCFStringEncodingShiftJIS: CFStringEncoding = 0x0A01;
//static kCFStringEncodingKOI8_R: CFStringEncoding = 0x0A02;
//static kCFStringEncodingBig5: CFStringEncoding = 0x0A03;
//static kCFStringEncodingMacRomanLatin1: CFStringEncoding = 0x0A04;
//static kCFStringEncodingHZ_GB_2312: CFStringEncoding = 0x0A05;
//static kCFStringEncodingBig5_HKSCS_1999: CFStringEncoding = 0x0A06;
//static kCFStringEncodingVISCII: CFStringEncoding = 0x0A07;
//static kCFStringEncodingKOI8_U: CFStringEncoding = 0x0A08;
//static kCFStringEncodingBig5_E: CFStringEncoding = 0x0A09;
// Defined above: kCFStringEncodingNextStepLatin = 0x0B01
static kCFStringEncodingNextStepJapanese: CFStringEncoding = 0x0B02;
static kCFStringEncodingEBCDIC_US: CFStringEncoding = 0x0C01;
static kCFStringEncodingEBCDIC_CP037: CFStringEncoding = 0x0C02;
static kCFStringEncodingUTF7: CFStringEncoding = 0x04000100;
static kCFStringEncodingUTF7_IMAP: CFStringEncoding = 0x0A10;
static kCFStringEncodingShiftJIS_X0213_00: CFStringEncoding = 0x0628; /* Deprecated */
//static kCFStringEncodingNextStepJapanese: CFStringEncoding = 0x0B02;
//static kCFStringEncodingEBCDIC_US: CFStringEncoding = 0x0C01;
//static kCFStringEncodingEBCDIC_CP037: CFStringEncoding = 0x0C02;
//static kCFStringEncodingUTF7: CFStringEncoding = 0x04000100;
//static kCFStringEncodingUTF7_IMAP: CFStringEncoding = 0x0A10;
//static kCFStringEncodingShiftJIS_X0213_00: CFStringEncoding = 0x0628; /* Deprecated */
struct __CFString;
@@ -207,7 +207,6 @@ pub struct CFString {
}
impl Clone for CFString {
#[fixed_stack_segment]
#[inline]
fn clone(&self) -> CFString {
unsafe {
@@ -217,7 +216,6 @@ impl Clone for CFString {
}
impl Drop for CFString {
#[fixed_stack_segment]
fn drop(&mut self) {
unsafe {
CFRelease(self.as_CFTypeRef())
@@ -237,7 +235,6 @@ impl TCFType<CFStringRef> for CFString {
}
}
#[fixed_stack_segment]
#[inline]
fn type_id(_: Option<CFString>) -> CFTypeID {
unsafe {
@@ -248,25 +245,21 @@ impl TCFType<CFStringRef> for CFString {
impl FromStr for CFString {
/// Creates a new `CFString` instance from a Rust string.
#[fixed_stack_segment]
#[inline]
fn from_str(string: &str) -> Option<CFString> {
unsafe {
let string_ref = string.as_imm_buf(|bytes, len| {
CFStringCreateWithBytes(kCFAllocatorDefault,
bytes,
len.to_CFIndex(),
kCFStringEncodingUTF8,
false as Boolean,
kCFAllocatorNull)
});
let string_ref = CFStringCreateWithBytes(kCFAllocatorDefault,
string.as_ptr(),
string.len().to_CFIndex(),
kCFStringEncodingUTF8,
false as Boolean,
kCFAllocatorNull);
Some(TCFType::wrap_under_create_rule(string_ref))
}
}
}
impl ToStr for CFString {
#[fixed_stack_segment]
fn to_str(&self) -> ~str {
unsafe {
let char_len = self.char_len();
@@ -291,7 +284,7 @@ impl ToStr for CFString {
kCFStringEncodingUTF8,
0,
false as Boolean,
vec::raw::to_ptr(buffer),
buffer.as_ptr(),
buffer.len().to_CFIndex(),
&mut bytes_used) as uint;
assert!(chars_written.to_CFIndex() == char_len);
@@ -309,24 +302,20 @@ impl ToStr for CFString {
impl CFString {
/// Like `CFString::from_string`, but references a string that can be used as a backing store
/// by virtue of being statically allocated.
#[fixed_stack_segment]
#[inline]
pub fn from_static_string(string: &'static str) -> CFString {
unsafe {
let string_ref = string.as_imm_buf(|bytes, len| {
CFStringCreateWithBytesNoCopy(kCFAllocatorDefault,
bytes,
len.to_CFIndex(),
kCFStringEncodingUTF8,
false as Boolean,
kCFAllocatorNull)
});
let string_ref = CFStringCreateWithBytesNoCopy(kCFAllocatorDefault,
string.as_ptr(),
string.len().to_CFIndex(),
kCFStringEncodingUTF8,
false as Boolean,
kCFAllocatorNull);
TCFType::wrap_under_create_rule(string_ref)
}
}
/// Returns the number of characters in the string.
#[fixed_stack_segment]
#[inline]
pub fn char_len(&self) -> CFIndex {
unsafe {
@@ -335,8 +324,7 @@ impl CFString {
}
}
#[link_args="-framework CoreFoundation"]
#[nolink]
#[link(name = "CoreFoundation", kind = "framework")]
extern {
/*
* CFString.h
+52 -57
View File
@@ -11,9 +11,8 @@
#[allow(non_uppercase_statics)];
use base::{CFAllocatorRef, CFOptionFlags, CFRelease, CFTypeID, TCFType};
use data::CFDataRef;
use string::{CFString, CFStringRef, CFStringEncoding};
use base::{CFOptionFlags, CFRelease, CFTypeID, TCFType};
use string::{CFString, CFStringRef};
struct __CFURL;
@@ -24,7 +23,6 @@ pub struct CFURL {
}
impl Drop for CFURL {
#[fixed_stack_segment]
fn drop(&mut self) {
unsafe {
CFRelease(self.as_CFTypeRef())
@@ -43,7 +41,6 @@ impl TCFType<CFURLRef> for CFURL {
}
}
#[fixed_stack_segment]
#[inline]
fn type_id(_: Option<CFURL>) -> CFTypeID {
unsafe {
@@ -53,7 +50,6 @@ impl TCFType<CFURLRef> for CFURL {
}
impl ToStr for CFURL {
#[fixed_stack_segment]
#[inline]
fn to_str(&self) -> ~str {
unsafe {
@@ -65,61 +61,60 @@ impl ToStr for CFURL {
type CFURLBookmarkCreationOptions = CFOptionFlags;
static kCFURLBookmarkCreationPreferFileIDResolutionMask: CFURLBookmarkCreationOptions =
(1 << 8) as u32;
static kCFURLBookmarkCreationMinimalBookmarkMask: CFURLBookmarkCreationOptions =
(1 << 9) as u32;
static kCFURLBookmarkCreationSuitableForBookmarkFile: CFURLBookmarkCreationOptions =
(1 << 10) as u32;
static kCFURLBookmarkCreationWithSecurityScope: CFURLBookmarkCreationOptions =
(1 << 11) as u32;
static kCFURLBookmarkCreationSecurityScopeAllowOnlyReadAccess: CFURLBookmarkCreationOptions =
(1 << 12) as u32;
// static kCFURLBookmarkCreationPreferFileIDResolutionMask: CFURLBookmarkCreationOptions =
// (1 << 8) as u32;
// static kCFURLBookmarkCreationMinimalBookmarkMask: CFURLBookmarkCreationOptions =
// (1 << 9) as u32;
// static kCFURLBookmarkCreationSuitableForBookmarkFile: CFURLBookmarkCreationOptions =
// (1 << 10) as u32;
// static kCFURLBookmarkCreationWithSecurityScope: CFURLBookmarkCreationOptions =
// (1 << 11) as u32;
// static kCFURLBookmarkCreationSecurityScopeAllowOnlyReadAccess: CFURLBookmarkCreationOptions =
// (1 << 12) as u32;
// TODO: there are a lot of missing keys and constants. Add if you are bored or need them.
#[link_args="-framework CoreFoundation"]
#[nolink]
#[link(name = "CoreFoundation", kind = "framework")]
extern {
/*
* CFURL.h
*/
/* Common File System Resource Keys */
static kCFURLAttributeModificationDateKey: CFStringRef;
static kCFURLContentAccessDateKey: CFStringRef;
static kCFURLContentModificationDateKey: CFStringRef;
static kCFURLCreationDateKey: CFStringRef;
static kCFURLCustomIconKey: CFStringRef;
static kCFURLEffectiveIconKey: CFStringRef;
static kCFURLFileResourceIdentifierKey: CFStringRef;
static kCFURLFileSecurityKey: CFStringRef;
static kCFURLHasHiddenExtensionKey: CFStringRef;
static kCFURLIsDirectoryKey: CFStringRef;
static kCFURLIsExecutableKey: CFStringRef;
static kCFURLIsHiddenKey: CFStringRef;
static kCFURLIsPackageKey: CFStringRef;
static kCFURLIsReadableKey: CFStringRef;
static kCFURLIsRegularFileKey: CFStringRef;
static kCFURLIsSymbolicLinkKey: CFStringRef;
static kCFURLIsSystemImmutableKey: CFStringRef;
static kCFURLIsUserImmutableKey: CFStringRef;
static kCFURLIsVolumeKey: CFStringRef;
static kCFURLIsWritableKey: CFStringRef;
static kCFURLLabelColorKey: CFStringRef;
static kCFURLLabelNumberKey: CFStringRef;
static kCFURLLinkCountKey: CFStringRef;
static kCFURLLocalizedLabelKey: CFStringRef;
static kCFURLLocalizedNameKey: CFStringRef;
static kCFURLLocalizedTypeDescriptionKey: CFStringRef;
static kCFURLNameKey: CFStringRef;
static kCFURLParentDirectoryURLKey: CFStringRef;
static kCFURLPreferredIOBlockSizeKey: CFStringRef;
static kCFURLTypeIdentifierKey: CFStringRef;
static kCFURLVolumeIdentifierKey: CFStringRef;
static kCFURLVolumeURLKey: CFStringRef;
static kCFURLIsExcludedFromBackupKey: CFStringRef;
static kCFURLFileResourceTypeKey: CFStringRef;
// static kCFURLAttributeModificationDateKey: CFStringRef;
// static kCFURLContentAccessDateKey: CFStringRef;
// static kCFURLContentModificationDateKey: CFStringRef;
// static kCFURLCreationDateKey: CFStringRef;
// static kCFURLCustomIconKey: CFStringRef;
// static kCFURLEffectiveIconKey: CFStringRef;
// static kCFURLFileResourceIdentifierKey: CFStringRef;
// static kCFURLFileSecurityKey: CFStringRef;
// static kCFURLHasHiddenExtensionKey: CFStringRef;
// static kCFURLIsDirectoryKey: CFStringRef;
// static kCFURLIsExecutableKey: CFStringRef;
// static kCFURLIsHiddenKey: CFStringRef;
// static kCFURLIsPackageKey: CFStringRef;
// static kCFURLIsReadableKey: CFStringRef;
// static kCFURLIsRegularFileKey: CFStringRef;
// static kCFURLIsSymbolicLinkKey: CFStringRef;
// static kCFURLIsSystemImmutableKey: CFStringRef;
// static kCFURLIsUserImmutableKey: CFStringRef;
// static kCFURLIsVolumeKey: CFStringRef;
// static kCFURLIsWritableKey: CFStringRef;
// static kCFURLLabelColorKey: CFStringRef;
// static kCFURLLabelNumberKey: CFStringRef;
// static kCFURLLinkCountKey: CFStringRef;
// static kCFURLLocalizedLabelKey: CFStringRef;
// static kCFURLLocalizedNameKey: CFStringRef;
// static kCFURLLocalizedTypeDescriptionKey: CFStringRef;
// static kCFURLNameKey: CFStringRef;
// static kCFURLParentDirectoryURLKey: CFStringRef;
// static kCFURLPreferredIOBlockSizeKey: CFStringRef;
// static kCFURLTypeIdentifierKey: CFStringRef;
// static kCFURLVolumeIdentifierKey: CFStringRef;
// static kCFURLVolumeURLKey: CFStringRef;
// static kCFURLIsExcludedFromBackupKey: CFStringRef;
// static kCFURLFileResourceTypeKey: CFStringRef;
/* Creating a CFURL */
//fn CFURLCopyAbsoluteURL
@@ -137,8 +132,8 @@ extern {
//fn CFURLCreateWithBytes
//fn CFURLCreateWithFileSystemPath
//fn CFURLCreateWithFileSystemPathRelativeToBase
fn CFURLCreateWithString(allocator: CFAllocatorRef, urlString: CFStringRef,
baseURL: CFURLRef) -> CFURLRef;
//fn CFURLCreateWithString(allocator: CFAllocatorRef, urlString: CFStringRef,
// baseURL: CFURLRef) -> CFURLRef;
/* Accessing the Parts of a URL */
//fn CFURLCanBeDecomposed
@@ -160,8 +155,8 @@ extern {
//fn CFURLHasDirectoryPath
/* Converting URLs to Other Representations */
fn CFURLCreateData(allocator: CFAllocatorRef, url: CFURLRef,
encoding: CFStringEncoding, escapeWhitespace: bool) -> CFDataRef;
//fn CFURLCreateData(allocator: CFAllocatorRef, url: CFURLRef,
// encoding: CFStringEncoding, escapeWhitespace: bool) -> CFDataRef;
//fn CFURLCreateStringByAddingPercentEscapes
//fn CFURLCreateStringByReplacingPercentEscapes
//fn CFURLCreateStringByReplacingPercentEscapesUsingEncoding
@@ -170,7 +165,7 @@ extern {
fn CFURLGetString(anURL: CFURLRef) -> CFStringRef;
/* Getting URL Properties */
fn CFURLGetBaseURL(anURL: CFURLRef) -> CFURLRef;
//fn CFURLGetBaseURL(anURL: CFURLRef) -> CFURLRef;
//fn CFURLGetBytes
//fn CFURLGetByteRangeForComponent
fn CFURLGetTypeID() -> CFTypeID;