use base::{Boolean, CFIndex};
use string::CFStringRef;
use propertylist::CFPropertyListRef;
use array::CFArrayRef;
use dictionary::CFDictionaryRef;
extern {
pub static kCFPreferencesAnyApplication: CFStringRef;
pub static kCFPreferencesCurrentApplication: CFStringRef;
pub static kCFPreferencesAnyHost: CFStringRef;
pub static kCFPreferencesCurrentHost: CFStringRef;
pub static kCFPreferencesAnyUser: CFStringRef;
pub static kCFPreferencesCurrentUser: CFStringRef;
pub fn CFPreferencesCopyAppValue(key: CFStringRef, applicationID: CFStringRef) -> CFPropertyListRef;
pub fn CFPreferencesCopyKeyList(applicationID: CFStringRef, userName: CFStringRef, hostName: CFStringRef) -> CFArrayRef;
pub fn CFPreferencesCopyMultiple(keysToFetch: CFArrayRef, applicationID: CFStringRef, userName: CFStringRef, hostName: CFStringRef) -> CFDictionaryRef;
pub fn CFPreferencesCopyValue(key: CFStringRef, applicationID: CFStringRef, userName: CFStringRef, hostName: CFStringRef) -> CFPropertyListRef;
pub fn CFPreferencesGetAppBooleanValue(key: CFStringRef, applicationID: CFStringRef, keyExistsAndHasValidFormat: *mut Boolean) -> Boolean;
pub fn CFPreferencesGetAppIntegerValue(key: CFStringRef, applicationID: CFStringRef, keyExistsAndHasValidFormat: *mut Boolean) -> CFIndex;
pub fn CFPreferencesSetAppValue(key: CFStringRef, value: CFPropertyListRef, applicationID: CFStringRef);
pub fn CFPreferencesSetMultiple(keysToSet: CFDictionaryRef, keysToRemove: CFArrayRef, applicationID: CFStringRef, userName: CFStringRef, hostName: CFStringRef);
pub fn CFPreferencesSetValue(key: CFStringRef, value: CFPropertyListRef, applicationID: CFStringRef, userName: CFStringRef, hostName: CFStringRef);
pub fn CFPreferencesAppSynchronize(applicationID: CFStringRef) -> Boolean;
pub fn CFPreferencesSynchronize(applicationID: CFStringRef, userName: CFStringRef, hostName: CFStringRef) -> Boolean;
pub fn CFPreferencesAddSuitePreferencesToApp(applicationID: CFStringRef, suiteID: CFStringRef);
pub fn CFPreferencesRemoveSuitePreferencesFromApp(applicationID: CFStringRef, suiteID: CFStringRef);
pub fn CFPreferencesAppValueIsForced(key: CFStringRef, applicationID: CFStringRef) -> Boolean;
pub fn CFPreferencesCopyApplicationList(userName: CFStringRef, hostName: CFStringRef) -> CFArrayRef; }