use core::ffi::*;
use core::ptr::NonNull;
#[cfg(feature = "objc2")]
use objc2::__framework_prelude::*;
#[cfg(feature = "objc2-core-foundation")]
use objc2_core_foundation::*;
use crate::*;
pub const kMIDIInvalidClient: OSStatus = -10830;
pub const kMIDIInvalidPort: OSStatus = -10831;
pub const kMIDIWrongEndpointType: OSStatus = -10832;
pub const kMIDINoConnection: OSStatus = -10833;
pub const kMIDIUnknownEndpoint: OSStatus = -10834;
pub const kMIDIUnknownProperty: OSStatus = -10835;
pub const kMIDIWrongPropertyType: OSStatus = -10836;
pub const kMIDINoCurrentSetup: OSStatus = -10837;
pub const kMIDIMessageSendErr: OSStatus = -10838;
pub const kMIDIServerStartErr: OSStatus = -10839;
pub const kMIDISetupFormatErr: OSStatus = -10840;
pub const kMIDIWrongThread: OSStatus = -10841;
pub const kMIDIObjectNotFound: OSStatus = -10842;
pub const kMIDIIDNotUnique: OSStatus = -10843;
pub const kMIDINotPermitted: OSStatus = -10844;
pub const kMIDIUnknownError: OSStatus = -10845;
pub type MIDIObjectRef = u32;
pub type MIDIClientRef = MIDIObjectRef;
pub type MIDIPortRef = MIDIObjectRef;
pub type MIDIDeviceRef = MIDIObjectRef;
pub type MIDIEntityRef = MIDIObjectRef;
pub type MIDIEndpointRef = MIDIObjectRef;
pub type MIDITimeStamp = u64;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MIDIObjectType(pub i32);
impl MIDIObjectType {
#[doc(alias = "kMIDIObjectType_Other")]
pub const Other: Self = Self(-1);
#[doc(alias = "kMIDIObjectType_Device")]
pub const Device: Self = Self(0);
#[doc(alias = "kMIDIObjectType_Entity")]
pub const Entity: Self = Self(1);
#[doc(alias = "kMIDIObjectType_Source")]
pub const Source: Self = Self(2);
#[doc(alias = "kMIDIObjectType_Destination")]
pub const Destination: Self = Self(3);
#[doc(alias = "kMIDIObjectType_ExternalDevice")]
pub const ExternalDevice: Self = Self(0x10 | MIDIObjectType::Device.0);
#[doc(alias = "kMIDIObjectType_ExternalEntity")]
pub const ExternalEntity: Self = Self(0x10 | MIDIObjectType::Entity.0);
#[doc(alias = "kMIDIObjectType_ExternalSource")]
pub const ExternalSource: Self = Self(0x10 | MIDIObjectType::Source.0);
#[doc(alias = "kMIDIObjectType_ExternalDestination")]
pub const ExternalDestination: Self = Self(0x10 | MIDIObjectType::Destination.0);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIObjectType {
const ENCODING: Encoding = i32::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIObjectType {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
pub static kMIDIObjectType_ExternalMask: MIDIObjectType = MIDIObjectType(0x10);
pub type MIDIUniqueID = i32;
pub const kMIDIInvalidUniqueID: MIDIUniqueID = 0;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MIDIProtocolID(pub i32);
impl MIDIProtocolID {
#[doc(alias = "kMIDIProtocol_1_0")]
pub const Protocol_1_0: Self = Self(1);
#[doc(alias = "kMIDIProtocol_2_0")]
pub const Protocol_2_0: Self = Self(2);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIProtocolID {
const ENCODING: Encoding = i32::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIProtocolID {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
pub type MIDINotifyProc =
Option<unsafe extern "C-unwind" fn(NonNull<MIDINotification>, *mut c_void)>;
#[cfg(feature = "block2")]
pub type MIDINotifyBlock = *mut block2::DynBlock<dyn Fn(NonNull<MIDINotification>)>;
#[cfg(feature = "block2")]
pub type MIDIReceiveBlock = *mut block2::DynBlock<dyn Fn(NonNull<MIDIEventList>, *mut c_void)>;
#[deprecated = "use MIDIReceiveBlock and MIDIEventLists"]
pub type MIDIReadProc =
Option<unsafe extern "C-unwind" fn(NonNull<MIDIPacketList>, *mut c_void, *mut c_void)>;
#[deprecated = "use MIDIReceiveBlock and MIDIEventLists"]
#[cfg(feature = "block2")]
pub type MIDIReadBlock = *mut block2::DynBlock<dyn Fn(NonNull<MIDIPacketList>, *mut c_void)>;
pub type MIDICompletionProc = Option<unsafe extern "C-unwind" fn(NonNull<MIDISysexSendRequest>)>;
pub type MIDICompletionProcUMP =
Option<unsafe extern "C-unwind" fn(NonNull<MIDISysexSendRequestUMP>)>;
#[repr(C, packed(4))]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MIDIEventPacket {
pub timeStamp: MIDITimeStamp,
pub wordCount: u32,
pub words: [u32; 64],
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIEventPacket {
const ENCODING: Encoding = Encoding::Struct(
"MIDIEventPacket",
&[
<MIDITimeStamp>::ENCODING,
<u32>::ENCODING,
<[u32; 64]>::ENCODING,
],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIEventPacket {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MIDIEventList {
pub protocol: MIDIProtocolID,
pub numPackets: u32,
pub packet: [MIDIEventPacket; 1],
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIEventList {
const ENCODING: Encoding = Encoding::Struct(
"MIDIEventList",
&[
<MIDIProtocolID>::ENCODING,
<u32>::ENCODING,
<[MIDIEventPacket; 1]>::ENCODING,
],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIEventList {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C, packed(4))]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MIDIPacket {
pub timeStamp: MIDITimeStamp,
pub length: u16,
pub data: [Byte; 256],
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIPacket {
const ENCODING: Encoding = Encoding::Struct(
"MIDIPacket",
&[
<MIDITimeStamp>::ENCODING,
<u16>::ENCODING,
<[Byte; 256]>::ENCODING,
],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIPacket {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MIDIPacketList {
pub numPackets: u32,
pub packet: [MIDIPacket; 1],
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIPacketList {
const ENCODING: Encoding = Encoding::Struct(
"MIDIPacketList",
&[<u32>::ENCODING, <[MIDIPacket; 1]>::ENCODING],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIPacketList {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C)]
#[allow(unpredictable_function_pointer_comparisons)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MIDISysexSendRequest {
pub destination: MIDIEndpointRef,
pub data: NonNull<Byte>,
pub bytesToSend: u32,
pub complete: Boolean,
pub reserved: [Byte; 3],
pub completionProc: MIDICompletionProc,
pub completionRefCon: *mut c_void,
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDISysexSendRequest {
const ENCODING: Encoding = Encoding::Struct(
"MIDISysexSendRequest",
&[
<MIDIEndpointRef>::ENCODING,
<NonNull<Byte>>::ENCODING,
<u32>::ENCODING,
<Boolean>::ENCODING,
<[Byte; 3]>::ENCODING,
<MIDICompletionProc>::ENCODING,
<*mut c_void>::ENCODING,
],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDISysexSendRequest {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C)]
#[allow(unpredictable_function_pointer_comparisons)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MIDISysexSendRequestUMP {
pub destination: MIDIEndpointRef,
pub words: NonNull<u32>,
pub wordsToSend: u32,
pub complete: Boolean,
pub completionProc: MIDICompletionProcUMP,
pub completionRefCon: *mut c_void,
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDISysexSendRequestUMP {
const ENCODING: Encoding = Encoding::Struct(
"MIDISysexSendRequestUMP",
&[
<MIDIEndpointRef>::ENCODING,
<NonNull<u32>>::ENCODING,
<u32>::ENCODING,
<Boolean>::ENCODING,
<MIDICompletionProcUMP>::ENCODING,
<*mut c_void>::ENCODING,
],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDISysexSendRequestUMP {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MIDINotificationMessageID(pub i32);
impl MIDINotificationMessageID {
#[doc(alias = "kMIDIMsgSetupChanged")]
pub const MsgSetupChanged: Self = Self(1);
#[doc(alias = "kMIDIMsgObjectAdded")]
pub const MsgObjectAdded: Self = Self(2);
#[doc(alias = "kMIDIMsgObjectRemoved")]
pub const MsgObjectRemoved: Self = Self(3);
#[doc(alias = "kMIDIMsgPropertyChanged")]
pub const MsgPropertyChanged: Self = Self(4);
#[doc(alias = "kMIDIMsgThruConnectionsChanged")]
pub const MsgThruConnectionsChanged: Self = Self(5);
#[doc(alias = "kMIDIMsgSerialPortOwnerChanged")]
pub const MsgSerialPortOwnerChanged: Self = Self(6);
#[doc(alias = "kMIDIMsgIOError")]
pub const MsgIOError: Self = Self(7);
#[doc(alias = "kMIDIMsgInternalStart")]
pub const MsgInternalStart: Self = Self(0x1000);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDINotificationMessageID {
const ENCODING: Encoding = i32::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDINotificationMessageID {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MIDINotification {
pub messageID: MIDINotificationMessageID,
pub messageSize: u32,
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDINotification {
const ENCODING: Encoding = Encoding::Struct(
"MIDINotification",
&[<MIDINotificationMessageID>::ENCODING, <u32>::ENCODING],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDINotification {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MIDIObjectAddRemoveNotification {
pub messageID: MIDINotificationMessageID,
pub messageSize: u32,
pub parent: MIDIObjectRef,
pub parentType: MIDIObjectType,
pub child: MIDIObjectRef,
pub childType: MIDIObjectType,
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIObjectAddRemoveNotification {
const ENCODING: Encoding = Encoding::Struct(
"MIDIObjectAddRemoveNotification",
&[
<MIDINotificationMessageID>::ENCODING,
<u32>::ENCODING,
<MIDIObjectRef>::ENCODING,
<MIDIObjectType>::ENCODING,
<MIDIObjectRef>::ENCODING,
<MIDIObjectType>::ENCODING,
],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIObjectAddRemoveNotification {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[cfg(feature = "objc2-core-foundation")]
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MIDIObjectPropertyChangeNotification {
pub messageID: MIDINotificationMessageID,
pub messageSize: u32,
pub object: MIDIObjectRef,
pub objectType: MIDIObjectType,
pub propertyName: NonNull<CFString>,
}
#[cfg(all(feature = "objc2", feature = "objc2-core-foundation"))]
unsafe impl Encode for MIDIObjectPropertyChangeNotification {
const ENCODING: Encoding = Encoding::Struct(
"MIDIObjectPropertyChangeNotification",
&[
<MIDINotificationMessageID>::ENCODING,
<u32>::ENCODING,
<MIDIObjectRef>::ENCODING,
<MIDIObjectType>::ENCODING,
<NonNull<CFString>>::ENCODING,
],
);
}
#[cfg(all(feature = "objc2", feature = "objc2-core-foundation"))]
unsafe impl RefEncode for MIDIObjectPropertyChangeNotification {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MIDIIOErrorNotification {
pub messageID: MIDINotificationMessageID,
pub messageSize: u32,
pub driverDevice: MIDIDeviceRef,
pub errorCode: OSStatus,
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIIOErrorNotification {
const ENCODING: Encoding = Encoding::Struct(
"MIDIIOErrorNotification",
&[
<MIDINotificationMessageID>::ENCODING,
<u32>::ENCODING,
<MIDIDeviceRef>::ENCODING,
<OSStatus>::ENCODING,
],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIIOErrorNotification {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyName: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyManufacturer: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyModel: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyUniqueID: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyDeviceID: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyReceiveChannels: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyTransmitChannels: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyMaxSysExSpeed: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyAdvanceScheduleTimeMuSec: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyIsEmbeddedEntity: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyIsBroadcast: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertySingleRealtimeEntity: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyConnectionUniqueID: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyOffline: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyPrivate: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyDriverOwner: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
#[deprecated]
pub static kMIDIPropertyFactoryPatchNameFile: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
#[deprecated]
pub static kMIDIPropertyUserPatchNameFile: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
#[deprecated]
pub static kMIDIPropertyNameConfiguration: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyNameConfigurationDictionary: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyImage: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyDriverVersion: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertySupportsGeneralMIDI: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertySupportsMMC: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyCanRoute: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyReceivesClock: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyReceivesMTC: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyReceivesNotes: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyReceivesProgramChanges: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyReceivesBankSelectMSB: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyReceivesBankSelectLSB: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyTransmitsClock: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyTransmitsMTC: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyTransmitsNotes: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyTransmitsProgramChanges: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyTransmitsBankSelectMSB: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyTransmitsBankSelectLSB: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyPanDisruptsStereo: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyIsSampler: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyIsDrumMachine: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyIsMixer: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyIsEffectUnit: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyMaxReceiveChannels: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyMaxTransmitChannels: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyDriverDeviceEditorApp: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertySupportsShowControl: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyDisplayName: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyProtocolID: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyUMPActiveGroupBitmap: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyUMPCanTransmitGroupless: &'static CFString;
}
extern "C" {
#[cfg(feature = "objc2-core-foundation")]
pub static kMIDIPropertyAssociatedEndpoint: &'static CFString;
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
pub fn MIDIClientCreate(
name: &CFString,
notify_proc: MIDINotifyProc,
notify_ref_con: *mut c_void,
out_client: NonNull<MIDIClientRef>,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(all(feature = "block2", feature = "objc2-core-foundation"))]
pub fn MIDIClientCreateWithBlock(
name: &CFString,
out_client: NonNull<MIDIClientRef>,
notify_block: MIDINotifyBlock,
) -> OSStatus;
}
extern "C-unwind" {
pub fn MIDIClientDispose(client: MIDIClientRef) -> OSStatus;
}
extern "C-unwind" {
#[cfg(all(feature = "block2", feature = "objc2-core-foundation"))]
pub fn MIDIInputPortCreateWithProtocol(
client: MIDIClientRef,
port_name: &CFString,
protocol: MIDIProtocolID,
out_port: NonNull<MIDIPortRef>,
receive_block: MIDIReceiveBlock,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
#[deprecated]
pub fn MIDIInputPortCreate(
client: MIDIClientRef,
port_name: &CFString,
read_proc: MIDIReadProc,
ref_con: *mut c_void,
out_port: NonNull<MIDIPortRef>,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(all(feature = "block2", feature = "objc2-core-foundation"))]
#[deprecated]
pub fn MIDIInputPortCreateWithBlock(
client: MIDIClientRef,
port_name: &CFString,
out_port: NonNull<MIDIPortRef>,
read_block: MIDIReadBlock,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
pub fn MIDIOutputPortCreate(
client: MIDIClientRef,
port_name: &CFString,
out_port: NonNull<MIDIPortRef>,
) -> OSStatus;
}
extern "C-unwind" {
pub fn MIDIPortDispose(port: MIDIPortRef) -> OSStatus;
}
extern "C-unwind" {
pub fn MIDIPortConnectSource(
port: MIDIPortRef,
source: MIDIEndpointRef,
conn_ref_con: *mut c_void,
) -> OSStatus;
}
extern "C-unwind" {
pub fn MIDIPortDisconnectSource(port: MIDIPortRef, source: MIDIEndpointRef) -> OSStatus;
}
extern "C-unwind" {
pub fn MIDIGetNumberOfDevices() -> ItemCount;
}
extern "C-unwind" {
pub fn MIDIGetDevice(device_index0: ItemCount) -> MIDIDeviceRef;
}
extern "C-unwind" {
pub fn MIDIDeviceGetNumberOfEntities(device: MIDIDeviceRef) -> ItemCount;
}
extern "C-unwind" {
pub fn MIDIDeviceGetEntity(device: MIDIDeviceRef, entity_index0: ItemCount) -> MIDIEntityRef;
}
extern "C-unwind" {
pub fn MIDIEntityGetNumberOfSources(entity: MIDIEntityRef) -> ItemCount;
}
extern "C-unwind" {
pub fn MIDIEntityGetSource(entity: MIDIEntityRef, source_index0: ItemCount) -> MIDIEndpointRef;
}
extern "C-unwind" {
pub fn MIDIEntityGetNumberOfDestinations(entity: MIDIEntityRef) -> ItemCount;
}
extern "C-unwind" {
pub fn MIDIEntityGetDestination(
entity: MIDIEntityRef,
dest_index0: ItemCount,
) -> MIDIEndpointRef;
}
extern "C-unwind" {
pub fn MIDIEntityGetDevice(
in_entity: MIDIEntityRef,
out_device: *mut MIDIDeviceRef,
) -> OSStatus;
}
extern "C-unwind" {
pub fn MIDIGetNumberOfSources() -> ItemCount;
}
extern "C-unwind" {
pub fn MIDIGetSource(source_index0: ItemCount) -> MIDIEndpointRef;
}
extern "C-unwind" {
pub fn MIDIGetNumberOfDestinations() -> ItemCount;
}
extern "C-unwind" {
pub fn MIDIGetDestination(dest_index0: ItemCount) -> MIDIEndpointRef;
}
extern "C-unwind" {
pub fn MIDIEndpointGetEntity(
in_endpoint: MIDIEndpointRef,
out_entity: *mut MIDIEntityRef,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(all(feature = "block2", feature = "objc2-core-foundation"))]
pub fn MIDIDestinationCreateWithProtocol(
client: MIDIClientRef,
name: &CFString,
protocol: MIDIProtocolID,
out_dest: NonNull<MIDIEndpointRef>,
read_block: MIDIReceiveBlock,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
#[deprecated]
pub fn MIDIDestinationCreate(
client: MIDIClientRef,
name: &CFString,
read_proc: MIDIReadProc,
ref_con: *mut c_void,
out_dest: NonNull<MIDIEndpointRef>,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(all(feature = "block2", feature = "objc2-core-foundation"))]
#[deprecated]
pub fn MIDIDestinationCreateWithBlock(
client: MIDIClientRef,
name: &CFString,
out_dest: NonNull<MIDIEndpointRef>,
read_block: MIDIReadBlock,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
pub fn MIDISourceCreateWithProtocol(
client: MIDIClientRef,
name: &CFString,
protocol: MIDIProtocolID,
out_src: NonNull<MIDIEndpointRef>,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
#[deprecated]
pub fn MIDISourceCreate(
client: MIDIClientRef,
name: &CFString,
out_src: NonNull<MIDIEndpointRef>,
) -> OSStatus;
}
extern "C-unwind" {
pub fn MIDIEndpointDispose(endpt: MIDIEndpointRef) -> OSStatus;
}
extern "C-unwind" {
pub fn MIDIGetNumberOfExternalDevices() -> ItemCount;
}
extern "C-unwind" {
pub fn MIDIGetExternalDevice(device_index0: ItemCount) -> MIDIDeviceRef;
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
pub fn MIDIObjectGetIntegerProperty(
obj: MIDIObjectRef,
property_id: &CFString,
out_value: NonNull<i32>,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
pub fn MIDIObjectSetIntegerProperty(
obj: MIDIObjectRef,
property_id: &CFString,
value: i32,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
pub fn MIDIObjectGetStringProperty(
obj: MIDIObjectRef,
property_id: &CFString,
str: NonNull<*const CFString>,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
pub fn MIDIObjectSetStringProperty(
obj: MIDIObjectRef,
property_id: &CFString,
str: &CFString,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
pub fn MIDIObjectGetDataProperty(
obj: MIDIObjectRef,
property_id: &CFString,
out_data: NonNull<*const CFData>,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
pub fn MIDIObjectSetDataProperty(
obj: MIDIObjectRef,
property_id: &CFString,
data: &CFData,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
pub fn MIDIObjectGetDictionaryProperty(
obj: MIDIObjectRef,
property_id: &CFString,
out_dict: NonNull<*const CFDictionary>,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
pub fn MIDIObjectSetDictionaryProperty(
obj: MIDIObjectRef,
property_id: &CFString,
dict: &CFDictionary,
) -> OSStatus;
}
#[cfg(feature = "objc2-core-foundation")]
#[inline]
pub unsafe extern "C-unwind" fn MIDIObjectGetProperties(
obj: MIDIObjectRef,
out_properties: NonNull<*const CFPropertyList>,
deep: bool,
) -> OSStatus {
extern "C-unwind" {
fn MIDIObjectGetProperties(
obj: MIDIObjectRef,
out_properties: NonNull<*const CFPropertyList>,
deep: Boolean,
) -> OSStatus;
}
unsafe { MIDIObjectGetProperties(obj, out_properties, deep as _) }
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
pub fn MIDIObjectRemoveProperty(obj: MIDIObjectRef, property_id: &CFString) -> OSStatus;
}
extern "C-unwind" {
pub fn MIDIObjectFindByUniqueID(
in_unique_id: MIDIUniqueID,
out_object: *mut MIDIObjectRef,
out_object_type: *mut MIDIObjectType,
) -> OSStatus;
}
extern "C-unwind" {
pub fn MIDISendEventList(
port: MIDIPortRef,
dest: MIDIEndpointRef,
evtlist: NonNull<MIDIEventList>,
) -> OSStatus;
}
extern "C-unwind" {
#[deprecated]
pub fn MIDISend(
port: MIDIPortRef,
dest: MIDIEndpointRef,
pktlist: NonNull<MIDIPacketList>,
) -> OSStatus;
}
extern "C-unwind" {
pub fn MIDISendSysex(request: NonNull<MIDISysexSendRequest>) -> OSStatus;
}
extern "C-unwind" {
pub fn MIDISendUMPSysex(ump_request: NonNull<MIDISysexSendRequestUMP>) -> OSStatus;
}
extern "C-unwind" {
pub fn MIDISendUMPSysex8(ump_request: NonNull<MIDISysexSendRequestUMP>) -> OSStatus;
}
impl MIDIEventPacket {
#[doc(alias = "MIDIEventPacketSysexBytesForGroup")]
#[cfg(feature = "objc2-core-foundation")]
#[inline]
pub unsafe fn sysex_bytes_for_group(
pkt: NonNull<MIDIEventPacket>,
group_index: u8,
out_data: NonNull<*const CFData>,
) -> OSStatus {
extern "C-unwind" {
fn MIDIEventPacketSysexBytesForGroup(
pkt: NonNull<MIDIEventPacket>,
group_index: u8,
out_data: NonNull<*const CFData>,
) -> OSStatus;
}
unsafe { MIDIEventPacketSysexBytesForGroup(pkt, group_index, out_data) }
}
}
extern "C-unwind" {
pub fn MIDIReceivedEventList(src: MIDIEndpointRef, evtlist: NonNull<MIDIEventList>)
-> OSStatus;
}
extern "C-unwind" {
#[deprecated]
pub fn MIDIReceived(src: MIDIEndpointRef, pktlist: NonNull<MIDIPacketList>) -> OSStatus;
}
extern "C-unwind" {
pub fn MIDIFlushOutput(dest: MIDIEndpointRef) -> OSStatus;
}
extern "C-unwind" {
pub fn MIDIRestart() -> OSStatus;
}
impl MIDIEventPacket {
}
impl MIDIEventList {
#[doc(alias = "MIDIEventListInit")]
#[inline]
pub unsafe fn init(
evtlist: NonNull<MIDIEventList>,
protocol: MIDIProtocolID,
) -> NonNull<MIDIEventPacket> {
extern "C-unwind" {
fn MIDIEventListInit(
evtlist: NonNull<MIDIEventList>,
protocol: MIDIProtocolID,
) -> Option<NonNull<MIDIEventPacket>>;
}
let ret = unsafe { MIDIEventListInit(evtlist, protocol) };
ret.expect("function was marked as returning non-null, but actually returned NULL")
}
#[doc(alias = "MIDIEventListAdd")]
#[inline]
pub unsafe fn add(
evtlist: NonNull<MIDIEventList>,
list_size: ByteCount,
cur_packet: NonNull<MIDIEventPacket>,
time: MIDITimeStamp,
word_count: ByteCount,
words: NonNull<u32>,
) -> NonNull<MIDIEventPacket> {
extern "C-unwind" {
fn MIDIEventListAdd(
evtlist: NonNull<MIDIEventList>,
list_size: ByteCount,
cur_packet: NonNull<MIDIEventPacket>,
time: MIDITimeStamp,
word_count: ByteCount,
words: NonNull<u32>,
) -> Option<NonNull<MIDIEventPacket>>;
}
let ret =
unsafe { MIDIEventListAdd(evtlist, list_size, cur_packet, time, word_count, words) };
ret.expect("function was marked as returning non-null, but actually returned NULL")
}
}
impl MIDIPacket {
}
impl MIDIPacketList {
#[doc(alias = "MIDIPacketListInit")]
#[deprecated]
#[inline]
pub unsafe fn init(pktlist: NonNull<MIDIPacketList>) -> NonNull<MIDIPacket> {
extern "C-unwind" {
fn MIDIPacketListInit(pktlist: NonNull<MIDIPacketList>) -> Option<NonNull<MIDIPacket>>;
}
let ret = unsafe { MIDIPacketListInit(pktlist) };
ret.expect("function was marked as returning non-null, but actually returned NULL")
}
#[doc(alias = "MIDIPacketListAdd")]
#[deprecated]
#[inline]
pub unsafe fn add(
pktlist: NonNull<MIDIPacketList>,
list_size: ByteCount,
cur_packet: NonNull<MIDIPacket>,
time: MIDITimeStamp,
n_data: ByteCount,
data: NonNull<Byte>,
) -> NonNull<MIDIPacket> {
extern "C-unwind" {
fn MIDIPacketListAdd(
pktlist: NonNull<MIDIPacketList>,
list_size: ByteCount,
cur_packet: NonNull<MIDIPacket>,
time: MIDITimeStamp,
n_data: ByteCount,
data: NonNull<Byte>,
) -> Option<NonNull<MIDIPacket>>;
}
let ret = unsafe { MIDIPacketListAdd(pktlist, list_size, cur_packet, time, n_data, data) };
ret.expect("function was marked as returning non-null, but actually returned NULL")
}
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
#[deprecated = "renamed to `MIDIEventPacket::sysex_bytes_for_group`"]
pub fn MIDIEventPacketSysexBytesForGroup(
pkt: NonNull<MIDIEventPacket>,
group_index: u8,
out_data: NonNull<*const CFData>,
) -> OSStatus;
}
#[deprecated = "renamed to `MIDIEventList::init`"]
#[inline]
pub unsafe extern "C-unwind" fn MIDIEventListInit(
evtlist: NonNull<MIDIEventList>,
protocol: MIDIProtocolID,
) -> NonNull<MIDIEventPacket> {
extern "C-unwind" {
fn MIDIEventListInit(
evtlist: NonNull<MIDIEventList>,
protocol: MIDIProtocolID,
) -> Option<NonNull<MIDIEventPacket>>;
}
let ret = unsafe { MIDIEventListInit(evtlist, protocol) };
ret.expect("function was marked as returning non-null, but actually returned NULL")
}
#[deprecated = "renamed to `MIDIEventList::add`"]
#[inline]
pub unsafe extern "C-unwind" fn MIDIEventListAdd(
evtlist: NonNull<MIDIEventList>,
list_size: ByteCount,
cur_packet: NonNull<MIDIEventPacket>,
time: MIDITimeStamp,
word_count: ByteCount,
words: NonNull<u32>,
) -> NonNull<MIDIEventPacket> {
extern "C-unwind" {
fn MIDIEventListAdd(
evtlist: NonNull<MIDIEventList>,
list_size: ByteCount,
cur_packet: NonNull<MIDIEventPacket>,
time: MIDITimeStamp,
word_count: ByteCount,
words: NonNull<u32>,
) -> Option<NonNull<MIDIEventPacket>>;
}
let ret = unsafe { MIDIEventListAdd(evtlist, list_size, cur_packet, time, word_count, words) };
ret.expect("function was marked as returning non-null, but actually returned NULL")
}
#[deprecated = "renamed to `MIDIPacketList::init`"]
#[inline]
pub unsafe extern "C-unwind" fn MIDIPacketListInit(
pktlist: NonNull<MIDIPacketList>,
) -> NonNull<MIDIPacket> {
extern "C-unwind" {
fn MIDIPacketListInit(pktlist: NonNull<MIDIPacketList>) -> Option<NonNull<MIDIPacket>>;
}
let ret = unsafe { MIDIPacketListInit(pktlist) };
ret.expect("function was marked as returning non-null, but actually returned NULL")
}
#[deprecated = "renamed to `MIDIPacketList::add`"]
#[inline]
pub unsafe extern "C-unwind" fn MIDIPacketListAdd(
pktlist: NonNull<MIDIPacketList>,
list_size: ByteCount,
cur_packet: NonNull<MIDIPacket>,
time: MIDITimeStamp,
n_data: ByteCount,
data: NonNull<Byte>,
) -> NonNull<MIDIPacket> {
extern "C-unwind" {
fn MIDIPacketListAdd(
pktlist: NonNull<MIDIPacketList>,
list_size: ByteCount,
cur_packet: NonNull<MIDIPacket>,
time: MIDITimeStamp,
n_data: ByteCount,
data: NonNull<Byte>,
) -> Option<NonNull<MIDIPacket>>;
}
let ret = unsafe { MIDIPacketListAdd(pktlist, list_size, cur_packet, time, n_data, data) };
ret.expect("function was marked as returning non-null, but actually returned NULL")
}