Auto merge of #81 - pcwalton:bundle-dictionary-additions, r=larsbergstrom

Add bindings for `CFBundleGetMainBundle()`, `CFBundleGetInfoDictionary()`, and `CFDictionarySetValue()`.

r? @larsbergstrom

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/core-foundation-rs/81)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo
2016-05-16 10:15:20 -07:00
4 changed files with 29 additions and 0 deletions
+3
View File
@@ -10,6 +10,7 @@
use libc::c_void;
use base::CFTypeID;
use dictionary::CFDictionaryRef;
use string::CFStringRef;
#[repr(C)]
@@ -23,6 +24,8 @@ extern {
*/
pub fn CFBundleGetBundleWithIdentifier(bundleID: CFStringRef) -> CFBundleRef;
pub fn CFBundleGetFunctionPointerForName(bundle: CFBundleRef, function_name: CFStringRef) -> *const c_void;
pub fn CFBundleGetMainBundle() -> CFBundleRef;
pub fn CFBundleGetInfoDictionary(bundle: CFBundleRef) -> CFDictionaryRef;
pub fn CFBundleGetTypeID() -> CFTypeID;
}
+3
View File
@@ -63,4 +63,7 @@ extern {
pub fn CFDictionaryGetTypeID() -> CFTypeID;
pub fn CFDictionaryGetValueIfPresent(theDict: CFDictionaryRef, key: *const c_void, value: *mut *const c_void)
-> Boolean;
pub fn CFDictionarySetValue(theDict: CFDictionaryRef,
key: *const c_void,
value: *const c_void);
}
+18
View File
@@ -13,6 +13,7 @@ pub use core_foundation_sys::bundle::*;
use core_foundation_sys::base::CFRelease;
use base::{TCFType};
use dictionary::CFDictionary;
/// A Bundle type.
pub struct CFBundle(CFBundleRef);
@@ -25,4 +26,21 @@ impl Drop for CFBundle {
}
}
impl CFBundle {
pub fn main_bundle() -> CFBundle {
unsafe {
let bundle_ref = CFBundleGetMainBundle();
TCFType::wrap_under_get_rule(bundle_ref)
}
}
pub fn info_dictionary(&self) -> CFDictionary {
unsafe {
let info_dictionary = CFBundleGetInfoDictionary(self.0);
TCFType::wrap_under_get_rule(info_dictionary)
}
}
}
impl_TCFType!(CFBundle, CFBundleRef, CFBundleGetTypeID);
+5
View File
@@ -96,4 +96,9 @@ impl CFDictionary {
let value: CFTypeRef = mem::transmute(self.get(key));
TCFType::wrap_under_get_rule(value)
}
#[inline]
pub unsafe fn set_value(&self, key: *const c_void, value: *const c_void) {
CFDictionarySetValue(self.0, key, value)
}
}