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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user