use core::ffi::*;
use core::ptr::NonNull;
#[cfg(feature = "objc2-core-foundation")]
use objc2_core_foundation::*;
use crate::*;
pub const kAudioServicesNoError: OSStatus = 0;
pub const kAudioServicesUnsupportedPropertyError: OSStatus = 0x7074793f;
pub const kAudioServicesBadPropertySizeError: OSStatus = 0x2173697a;
pub const kAudioServicesBadSpecifierSizeError: OSStatus = 0x21737063;
pub const kAudioServicesSystemSoundUnspecifiedError: OSStatus = -1500;
pub const kAudioServicesSystemSoundClientTimedOutError: OSStatus = -1501;
pub const kAudioServicesSystemSoundExceededMaximumDurationError: OSStatus = -1502;
pub type SystemSoundID = u32;
pub type AudioServicesPropertyID = u32;
pub type AudioServicesSystemSoundCompletionProc =
Option<unsafe extern "C-unwind" fn(SystemSoundID, *mut c_void)>;
pub const kSystemSoundID_UserPreferredAlert: SystemSoundID = 0x00001000;
pub const kSystemSoundID_FlashScreen: SystemSoundID = 0x00000FFE;
pub const kUserPreferredAlert: SystemSoundID = kSystemSoundID_UserPreferredAlert;
pub const kSystemSoundID_Vibrate: SystemSoundID = 0x00000FFF;
pub const kAudioServicesPropertyIsUISound: AudioServicesPropertyID = 0x69737569;
pub const kAudioServicesPropertyCompletePlaybackIfAppDies: AudioServicesPropertyID = 0x69666469;
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
pub fn AudioServicesCreateSystemSoundID(
in_file_url: &CFURL,
out_system_sound_id: NonNull<SystemSoundID>,
) -> OSStatus;
}
extern "C-unwind" {
pub fn AudioServicesDisposeSystemSoundID(in_system_sound_id: SystemSoundID) -> OSStatus;
}
extern "C-unwind" {
#[cfg(feature = "block2")]
pub fn AudioServicesPlayAlertSoundWithCompletion(
in_system_sound_id: SystemSoundID,
in_completion_block: Option<&block2::DynBlock<dyn Fn()>>,
);
}
extern "C-unwind" {
#[cfg(feature = "block2")]
pub fn AudioServicesPlaySystemSoundWithCompletion(
in_system_sound_id: SystemSoundID,
in_completion_block: Option<&block2::DynBlock<dyn Fn()>>,
);
}
extern "C-unwind" {
pub fn AudioServicesGetPropertyInfo(
in_property_id: AudioServicesPropertyID,
in_specifier_size: u32,
in_specifier: *const c_void,
out_property_data_size: *mut u32,
out_writable: *mut Boolean,
) -> OSStatus;
}
extern "C-unwind" {
pub fn AudioServicesGetProperty(
in_property_id: AudioServicesPropertyID,
in_specifier_size: u32,
in_specifier: *const c_void,
io_property_data_size: NonNull<u32>,
out_property_data: *mut c_void,
) -> OSStatus;
}
extern "C-unwind" {
pub fn AudioServicesSetProperty(
in_property_id: AudioServicesPropertyID,
in_specifier_size: u32,
in_specifier: *const c_void,
in_property_data_size: u32,
in_property_data: NonNull<c_void>,
) -> OSStatus;
}
extern "C-unwind" {
pub fn AudioServicesPlayAlertSound(in_system_sound_id: SystemSoundID);
}
extern "C-unwind" {
pub fn AudioServicesPlaySystemSound(in_system_sound_id: SystemSoundID);
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
pub fn AudioServicesAddSystemSoundCompletion(
in_system_sound_id: SystemSoundID,
in_run_loop: Option<&CFRunLoop>,
in_run_loop_mode: Option<&CFString>,
in_completion_routine: AudioServicesSystemSoundCompletionProc,
in_client_data: *mut c_void,
) -> OSStatus;
}
extern "C-unwind" {
pub fn AudioServicesRemoveSystemSoundCompletion(in_system_sound_id: SystemSoundID);
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kAudioServicesDetailIntendedSpatialExperience: &'static CFString;
}
extern "C-unwind" {
#[cfg(all(feature = "block2", feature = "objc2-core-foundation"))]
pub fn AudioServicesPlaySystemSoundWithDetails(
in_system_sound_id: SystemSoundID,
in_details: Option<&CFDictionary>,
in_completion_block: Option<&block2::DynBlock<dyn Fn()>>,
);
}
extern "C-unwind" {
#[cfg(all(feature = "block2", feature = "objc2-core-foundation"))]
pub fn AudioServicesPlayAlertSoundWithDetails(
in_system_sound_id: SystemSoundID,
in_details: Option<&CFDictionary>,
in_completion_block: Option<&block2::DynBlock<dyn Fn()>>,
);
}