//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ffi::*;
use core::ptr::NonNull;

use crate::*;

extern "C-unwind" {
    /// # Safety
    ///
    /// `ci` must be a valid pointer.
    #[cfg(all(feature = "AUComponent", feature = "AudioComponent"))]
    pub fn AudioOutputUnitStart(ci: AudioUnit) -> OSStatus;
}

extern "C-unwind" {
    /// # Safety
    ///
    /// `ci` must be a valid pointer.
    #[cfg(all(feature = "AUComponent", feature = "AudioComponent"))]
    pub fn AudioOutputUnitStop(ci: AudioUnit) -> OSStatus;
}

/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiooutputunitrange?language=objc)
pub const kAudioOutputUnitRange: c_uint = 0x0200;
/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiooutputunitstartselect?language=objc)
pub const kAudioOutputUnitStartSelect: c_uint = 0x0201;
/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/kaudiooutputunitstopselect?language=objc)
pub const kAudioOutputUnitStopSelect: c_uint = 0x0202;

/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiooutputunitstartproc?language=objc)
pub type AudioOutputUnitStartProc =
    Option<unsafe extern "C-unwind" fn(NonNull<c_void>) -> OSStatus>;

/// [Apple's documentation](https://developer.apple.com/documentation/audiotoolbox/audiooutputunitstopproc?language=objc)
pub type AudioOutputUnitStopProc = Option<unsafe extern "C-unwind" fn(NonNull<c_void>) -> OSStatus>;
