use core::cell::UnsafeCell;
use core::ffi::*;
use core::marker::{PhantomData, PhantomPinned};
use core::ptr::NonNull;
#[cfg(feature = "dispatch2")]
use dispatch2::*;
#[cfg(feature = "objc2")]
use objc2::__framework_prelude::*;
use objc2_core_foundation::*;
use crate::*;
#[doc(alias = "SCDynamicStoreRef")]
#[repr(C)]
pub struct SCDynamicStore {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
cf_type!(
unsafe impl SCDynamicStore {}
);
#[cfg(feature = "objc2")]
cf_objc2_type!(
unsafe impl RefEncode<"__SCDynamicStore"> for SCDynamicStore {}
);
#[repr(C)]
#[allow(unpredictable_function_pointer_comparisons)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SCDynamicStoreContext {
pub version: CFIndex,
pub info: *mut c_void,
pub retain: Option<unsafe extern "C-unwind" fn(NonNull<c_void>) -> NonNull<c_void>>,
pub release: Option<unsafe extern "C-unwind" fn(NonNull<c_void>)>,
pub copyDescription: Option<unsafe extern "C-unwind" fn(NonNull<c_void>) -> NonNull<CFString>>,
}
#[cfg(feature = "objc2")]
unsafe impl Encode for SCDynamicStoreContext {
const ENCODING: Encoding = Encoding::Struct(
"?",
&[
<CFIndex>::ENCODING,
<*mut c_void>::ENCODING,
<Option<unsafe extern "C-unwind" fn(NonNull<c_void>) -> NonNull<c_void>>>::ENCODING,
<Option<unsafe extern "C-unwind" fn(NonNull<c_void>)>>::ENCODING,
<Option<unsafe extern "C-unwind" fn(NonNull<c_void>) -> NonNull<CFString>>>::ENCODING,
],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for SCDynamicStoreContext {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
pub type SCDynamicStoreCallBack =
Option<unsafe extern "C-unwind" fn(NonNull<SCDynamicStore>, NonNull<CFArray>, *mut c_void)>;
unsafe impl ConcreteType for SCDynamicStore {
#[doc(alias = "SCDynamicStoreGetTypeID")]
#[inline]
fn type_id() -> CFTypeID {
extern "C-unwind" {
fn SCDynamicStoreGetTypeID() -> CFTypeID;
}
unsafe { SCDynamicStoreGetTypeID() }
}
}
impl SCDynamicStore {
#[doc(alias = "SCDynamicStoreCreate")]
#[inline]
pub unsafe fn new(
allocator: Option<&CFAllocator>,
name: &CFString,
callout: SCDynamicStoreCallBack,
context: *mut SCDynamicStoreContext,
) -> Option<CFRetained<SCDynamicStore>> {
extern "C-unwind" {
fn SCDynamicStoreCreate(
allocator: Option<&CFAllocator>,
name: &CFString,
callout: SCDynamicStoreCallBack,
context: *mut SCDynamicStoreContext,
) -> Option<NonNull<SCDynamicStore>>;
}
let ret = unsafe { SCDynamicStoreCreate(allocator, name, callout, context) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "SCDynamicStoreCreateWithOptions")]
#[inline]
pub unsafe fn with_options(
allocator: Option<&CFAllocator>,
name: &CFString,
store_options: Option<&CFDictionary>,
callout: SCDynamicStoreCallBack,
context: *mut SCDynamicStoreContext,
) -> Option<CFRetained<SCDynamicStore>> {
extern "C-unwind" {
fn SCDynamicStoreCreateWithOptions(
allocator: Option<&CFAllocator>,
name: &CFString,
store_options: Option<&CFDictionary>,
callout: SCDynamicStoreCallBack,
context: *mut SCDynamicStoreContext,
) -> Option<NonNull<SCDynamicStore>>;
}
let ret = unsafe {
SCDynamicStoreCreateWithOptions(allocator, name, store_options, callout, context)
};
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
}
extern "C" {
pub static kSCDynamicStoreUseSessionKeys: &'static CFString;
}
impl SCDynamicStore {
#[doc(alias = "SCDynamicStoreCreateRunLoopSource")]
#[inline]
pub fn new_run_loop_source(
allocator: Option<&CFAllocator>,
store: &SCDynamicStore,
order: CFIndex,
) -> Option<CFRetained<CFRunLoopSource>> {
extern "C-unwind" {
fn SCDynamicStoreCreateRunLoopSource(
allocator: Option<&CFAllocator>,
store: &SCDynamicStore,
order: CFIndex,
) -> Option<NonNull<CFRunLoopSource>>;
}
let ret = unsafe { SCDynamicStoreCreateRunLoopSource(allocator, store, order) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "SCDynamicStoreSetDispatchQueue")]
#[cfg(feature = "dispatch2")]
#[inline]
pub unsafe fn set_dispatch_queue(&self, queue: Option<&DispatchQueue>) -> bool {
extern "C-unwind" {
fn SCDynamicStoreSetDispatchQueue(
store: &SCDynamicStore,
queue: Option<&DispatchQueue>,
) -> Boolean;
}
let ret = unsafe { SCDynamicStoreSetDispatchQueue(self, queue) };
ret != 0
}
#[doc(alias = "SCDynamicStoreCopyKeyList")]
#[inline]
pub fn key_list(
store: Option<&SCDynamicStore>,
pattern: &CFString,
) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn SCDynamicStoreCopyKeyList(
store: Option<&SCDynamicStore>,
pattern: &CFString,
) -> Option<NonNull<CFArray>>;
}
let ret = unsafe { SCDynamicStoreCopyKeyList(store, pattern) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "SCDynamicStoreAddValue")]
#[inline]
pub unsafe fn add_value(
store: Option<&SCDynamicStore>,
key: &CFString,
value: &CFPropertyList,
) -> bool {
extern "C-unwind" {
fn SCDynamicStoreAddValue(
store: Option<&SCDynamicStore>,
key: &CFString,
value: &CFPropertyList,
) -> Boolean;
}
let ret = unsafe { SCDynamicStoreAddValue(store, key, value) };
ret != 0
}
#[doc(alias = "SCDynamicStoreAddTemporaryValue")]
#[inline]
pub unsafe fn add_temporary_value(&self, key: &CFString, value: &CFPropertyList) -> bool {
extern "C-unwind" {
fn SCDynamicStoreAddTemporaryValue(
store: &SCDynamicStore,
key: &CFString,
value: &CFPropertyList,
) -> Boolean;
}
let ret = unsafe { SCDynamicStoreAddTemporaryValue(self, key, value) };
ret != 0
}
#[doc(alias = "SCDynamicStoreCopyValue")]
#[inline]
pub fn value(
store: Option<&SCDynamicStore>,
key: &CFString,
) -> Option<CFRetained<CFPropertyList>> {
extern "C-unwind" {
fn SCDynamicStoreCopyValue(
store: Option<&SCDynamicStore>,
key: &CFString,
) -> Option<NonNull<CFPropertyList>>;
}
let ret = unsafe { SCDynamicStoreCopyValue(store, key) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "SCDynamicStoreCopyMultiple")]
#[inline]
pub unsafe fn multiple(
store: Option<&SCDynamicStore>,
keys: Option<&CFArray>,
patterns: Option<&CFArray>,
) -> Option<CFRetained<CFDictionary>> {
extern "C-unwind" {
fn SCDynamicStoreCopyMultiple(
store: Option<&SCDynamicStore>,
keys: Option<&CFArray>,
patterns: Option<&CFArray>,
) -> Option<NonNull<CFDictionary>>;
}
let ret = unsafe { SCDynamicStoreCopyMultiple(store, keys, patterns) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[doc(alias = "SCDynamicStoreSetValue")]
#[inline]
pub unsafe fn set_value(
store: Option<&SCDynamicStore>,
key: &CFString,
value: &CFPropertyList,
) -> bool {
extern "C-unwind" {
fn SCDynamicStoreSetValue(
store: Option<&SCDynamicStore>,
key: &CFString,
value: &CFPropertyList,
) -> Boolean;
}
let ret = unsafe { SCDynamicStoreSetValue(store, key, value) };
ret != 0
}
#[doc(alias = "SCDynamicStoreSetMultiple")]
#[inline]
pub unsafe fn set_multiple(
store: Option<&SCDynamicStore>,
keys_to_set: Option<&CFDictionary>,
keys_to_remove: Option<&CFArray>,
keys_to_notify: Option<&CFArray>,
) -> bool {
extern "C-unwind" {
fn SCDynamicStoreSetMultiple(
store: Option<&SCDynamicStore>,
keys_to_set: Option<&CFDictionary>,
keys_to_remove: Option<&CFArray>,
keys_to_notify: Option<&CFArray>,
) -> Boolean;
}
let ret = unsafe {
SCDynamicStoreSetMultiple(store, keys_to_set, keys_to_remove, keys_to_notify)
};
ret != 0
}
#[doc(alias = "SCDynamicStoreRemoveValue")]
#[inline]
pub fn remove_value(store: Option<&SCDynamicStore>, key: &CFString) -> bool {
extern "C-unwind" {
fn SCDynamicStoreRemoveValue(store: Option<&SCDynamicStore>, key: &CFString)
-> Boolean;
}
let ret = unsafe { SCDynamicStoreRemoveValue(store, key) };
ret != 0
}
#[doc(alias = "SCDynamicStoreNotifyValue")]
#[inline]
pub fn notify_value(store: Option<&SCDynamicStore>, key: &CFString) -> bool {
extern "C-unwind" {
fn SCDynamicStoreNotifyValue(store: Option<&SCDynamicStore>, key: &CFString)
-> Boolean;
}
let ret = unsafe { SCDynamicStoreNotifyValue(store, key) };
ret != 0
}
#[doc(alias = "SCDynamicStoreSetNotificationKeys")]
#[inline]
pub unsafe fn set_notification_keys(
&self,
keys: Option<&CFArray>,
patterns: Option<&CFArray>,
) -> bool {
extern "C-unwind" {
fn SCDynamicStoreSetNotificationKeys(
store: &SCDynamicStore,
keys: Option<&CFArray>,
patterns: Option<&CFArray>,
) -> Boolean;
}
let ret = unsafe { SCDynamicStoreSetNotificationKeys(self, keys, patterns) };
ret != 0
}
#[doc(alias = "SCDynamicStoreCopyNotifiedKeys")]
#[inline]
pub fn notified_keys(&self) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn SCDynamicStoreCopyNotifiedKeys(store: &SCDynamicStore) -> Option<NonNull<CFArray>>;
}
let ret = unsafe { SCDynamicStoreCopyNotifiedKeys(self) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
}
#[deprecated = "renamed to `SCDynamicStore::new`"]
#[inline]
pub unsafe extern "C-unwind" fn SCDynamicStoreCreate(
allocator: Option<&CFAllocator>,
name: &CFString,
callout: SCDynamicStoreCallBack,
context: *mut SCDynamicStoreContext,
) -> Option<CFRetained<SCDynamicStore>> {
extern "C-unwind" {
fn SCDynamicStoreCreate(
allocator: Option<&CFAllocator>,
name: &CFString,
callout: SCDynamicStoreCallBack,
context: *mut SCDynamicStoreContext,
) -> Option<NonNull<SCDynamicStore>>;
}
let ret = unsafe { SCDynamicStoreCreate(allocator, name, callout, context) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `SCDynamicStore::with_options`"]
#[inline]
pub unsafe extern "C-unwind" fn SCDynamicStoreCreateWithOptions(
allocator: Option<&CFAllocator>,
name: &CFString,
store_options: Option<&CFDictionary>,
callout: SCDynamicStoreCallBack,
context: *mut SCDynamicStoreContext,
) -> Option<CFRetained<SCDynamicStore>> {
extern "C-unwind" {
fn SCDynamicStoreCreateWithOptions(
allocator: Option<&CFAllocator>,
name: &CFString,
store_options: Option<&CFDictionary>,
callout: SCDynamicStoreCallBack,
context: *mut SCDynamicStoreContext,
) -> Option<NonNull<SCDynamicStore>>;
}
let ret = unsafe {
SCDynamicStoreCreateWithOptions(allocator, name, store_options, callout, context)
};
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `SCDynamicStore::new_run_loop_source`"]
#[inline]
pub extern "C-unwind" fn SCDynamicStoreCreateRunLoopSource(
allocator: Option<&CFAllocator>,
store: &SCDynamicStore,
order: CFIndex,
) -> Option<CFRetained<CFRunLoopSource>> {
extern "C-unwind" {
fn SCDynamicStoreCreateRunLoopSource(
allocator: Option<&CFAllocator>,
store: &SCDynamicStore,
order: CFIndex,
) -> Option<NonNull<CFRunLoopSource>>;
}
let ret = unsafe { SCDynamicStoreCreateRunLoopSource(allocator, store, order) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[cfg(feature = "dispatch2")]
#[deprecated = "renamed to `SCDynamicStore::set_dispatch_queue`"]
#[inline]
pub unsafe extern "C-unwind" fn SCDynamicStoreSetDispatchQueue(
store: &SCDynamicStore,
queue: Option<&DispatchQueue>,
) -> bool {
extern "C-unwind" {
fn SCDynamicStoreSetDispatchQueue(
store: &SCDynamicStore,
queue: Option<&DispatchQueue>,
) -> Boolean;
}
let ret = unsafe { SCDynamicStoreSetDispatchQueue(store, queue) };
ret != 0
}
#[deprecated = "renamed to `SCDynamicStore::key_list`"]
#[inline]
pub extern "C-unwind" fn SCDynamicStoreCopyKeyList(
store: Option<&SCDynamicStore>,
pattern: &CFString,
) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn SCDynamicStoreCopyKeyList(
store: Option<&SCDynamicStore>,
pattern: &CFString,
) -> Option<NonNull<CFArray>>;
}
let ret = unsafe { SCDynamicStoreCopyKeyList(store, pattern) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `SCDynamicStore::add_value`"]
#[inline]
pub unsafe extern "C-unwind" fn SCDynamicStoreAddValue(
store: Option<&SCDynamicStore>,
key: &CFString,
value: &CFPropertyList,
) -> bool {
extern "C-unwind" {
fn SCDynamicStoreAddValue(
store: Option<&SCDynamicStore>,
key: &CFString,
value: &CFPropertyList,
) -> Boolean;
}
let ret = unsafe { SCDynamicStoreAddValue(store, key, value) };
ret != 0
}
#[deprecated = "renamed to `SCDynamicStore::add_temporary_value`"]
#[inline]
pub unsafe extern "C-unwind" fn SCDynamicStoreAddTemporaryValue(
store: &SCDynamicStore,
key: &CFString,
value: &CFPropertyList,
) -> bool {
extern "C-unwind" {
fn SCDynamicStoreAddTemporaryValue(
store: &SCDynamicStore,
key: &CFString,
value: &CFPropertyList,
) -> Boolean;
}
let ret = unsafe { SCDynamicStoreAddTemporaryValue(store, key, value) };
ret != 0
}
#[deprecated = "renamed to `SCDynamicStore::value`"]
#[inline]
pub extern "C-unwind" fn SCDynamicStoreCopyValue(
store: Option<&SCDynamicStore>,
key: &CFString,
) -> Option<CFRetained<CFPropertyList>> {
extern "C-unwind" {
fn SCDynamicStoreCopyValue(
store: Option<&SCDynamicStore>,
key: &CFString,
) -> Option<NonNull<CFPropertyList>>;
}
let ret = unsafe { SCDynamicStoreCopyValue(store, key) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `SCDynamicStore::multiple`"]
#[inline]
pub unsafe extern "C-unwind" fn SCDynamicStoreCopyMultiple(
store: Option<&SCDynamicStore>,
keys: Option<&CFArray>,
patterns: Option<&CFArray>,
) -> Option<CFRetained<CFDictionary>> {
extern "C-unwind" {
fn SCDynamicStoreCopyMultiple(
store: Option<&SCDynamicStore>,
keys: Option<&CFArray>,
patterns: Option<&CFArray>,
) -> Option<NonNull<CFDictionary>>;
}
let ret = unsafe { SCDynamicStoreCopyMultiple(store, keys, patterns) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}
#[deprecated = "renamed to `SCDynamicStore::set_value`"]
#[inline]
pub unsafe extern "C-unwind" fn SCDynamicStoreSetValue(
store: Option<&SCDynamicStore>,
key: &CFString,
value: &CFPropertyList,
) -> bool {
extern "C-unwind" {
fn SCDynamicStoreSetValue(
store: Option<&SCDynamicStore>,
key: &CFString,
value: &CFPropertyList,
) -> Boolean;
}
let ret = unsafe { SCDynamicStoreSetValue(store, key, value) };
ret != 0
}
#[deprecated = "renamed to `SCDynamicStore::set_multiple`"]
#[inline]
pub unsafe extern "C-unwind" fn SCDynamicStoreSetMultiple(
store: Option<&SCDynamicStore>,
keys_to_set: Option<&CFDictionary>,
keys_to_remove: Option<&CFArray>,
keys_to_notify: Option<&CFArray>,
) -> bool {
extern "C-unwind" {
fn SCDynamicStoreSetMultiple(
store: Option<&SCDynamicStore>,
keys_to_set: Option<&CFDictionary>,
keys_to_remove: Option<&CFArray>,
keys_to_notify: Option<&CFArray>,
) -> Boolean;
}
let ret =
unsafe { SCDynamicStoreSetMultiple(store, keys_to_set, keys_to_remove, keys_to_notify) };
ret != 0
}
#[deprecated = "renamed to `SCDynamicStore::remove_value`"]
#[inline]
pub extern "C-unwind" fn SCDynamicStoreRemoveValue(
store: Option<&SCDynamicStore>,
key: &CFString,
) -> bool {
extern "C-unwind" {
fn SCDynamicStoreRemoveValue(store: Option<&SCDynamicStore>, key: &CFString) -> Boolean;
}
let ret = unsafe { SCDynamicStoreRemoveValue(store, key) };
ret != 0
}
#[deprecated = "renamed to `SCDynamicStore::notify_value`"]
#[inline]
pub extern "C-unwind" fn SCDynamicStoreNotifyValue(
store: Option<&SCDynamicStore>,
key: &CFString,
) -> bool {
extern "C-unwind" {
fn SCDynamicStoreNotifyValue(store: Option<&SCDynamicStore>, key: &CFString) -> Boolean;
}
let ret = unsafe { SCDynamicStoreNotifyValue(store, key) };
ret != 0
}
#[deprecated = "renamed to `SCDynamicStore::set_notification_keys`"]
#[inline]
pub unsafe extern "C-unwind" fn SCDynamicStoreSetNotificationKeys(
store: &SCDynamicStore,
keys: Option<&CFArray>,
patterns: Option<&CFArray>,
) -> bool {
extern "C-unwind" {
fn SCDynamicStoreSetNotificationKeys(
store: &SCDynamicStore,
keys: Option<&CFArray>,
patterns: Option<&CFArray>,
) -> Boolean;
}
let ret = unsafe { SCDynamicStoreSetNotificationKeys(store, keys, patterns) };
ret != 0
}
#[deprecated = "renamed to `SCDynamicStore::notified_keys`"]
#[inline]
pub extern "C-unwind" fn SCDynamicStoreCopyNotifiedKeys(
store: &SCDynamicStore,
) -> Option<CFRetained<CFArray>> {
extern "C-unwind" {
fn SCDynamicStoreCopyNotifiedKeys(store: &SCDynamicStore) -> Option<NonNull<CFArray>>;
}
let ret = unsafe { SCDynamicStoreCopyNotifiedKeys(store) };
ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
}