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::*;
#[cfg(feature = "MIDIServices")]
pub type MIDIThruConnectionRef = MIDIObjectRef;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MIDIValueMap {
pub value: [u8; 128],
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIValueMap {
const ENCODING: Encoding = Encoding::Struct("MIDIValueMap", &[<[u8; 128]>::ENCODING]);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIValueMap {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MIDITransformType(pub u16);
impl MIDITransformType {
#[doc(alias = "kMIDITransform_None")]
pub const None: Self = Self(0);
#[doc(alias = "kMIDITransform_FilterOut")]
pub const FilterOut: Self = Self(1);
#[doc(alias = "kMIDITransform_MapControl")]
pub const MapControl: Self = Self(2);
#[doc(alias = "kMIDITransform_Add")]
pub const Add: Self = Self(8);
#[doc(alias = "kMIDITransform_Scale")]
pub const Scale: Self = Self(9);
#[doc(alias = "kMIDITransform_MinValue")]
pub const MinValue: Self = Self(10);
#[doc(alias = "kMIDITransform_MaxValue")]
pub const MaxValue: Self = Self(11);
#[doc(alias = "kMIDITransform_MapValue")]
pub const MapValue: Self = Self(12);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDITransformType {
const ENCODING: Encoding = u16::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDITransformType {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
pub const kMIDIThruConnection_MaxEndpoints: c_uint = 8;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MIDITransformControlType(pub u8);
impl MIDITransformControlType {
#[doc(alias = "kMIDIControlType_7Bit")]
pub const ControlType_7Bit: Self = Self(0);
#[doc(alias = "kMIDIControlType_14Bit")]
pub const ControlType_14Bit: Self = Self(1);
#[doc(alias = "kMIDIControlType_7BitRPN")]
pub const ControlType_7BitRPN: Self = Self(2);
#[doc(alias = "kMIDIControlType_14BitRPN")]
pub const ControlType_14BitRPN: Self = Self(3);
#[doc(alias = "kMIDIControlType_7BitNRPN")]
pub const ControlType_7BitNRPN: Self = Self(4);
#[doc(alias = "kMIDIControlType_14BitNRPN")]
pub const ControlType_14BitNRPN: Self = Self(5);
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDITransformControlType {
const ENCODING: Encoding = u8::ENCODING;
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDITransformControlType {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MIDITransform {
pub transform: MIDITransformType,
pub param: i16,
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDITransform {
const ENCODING: Encoding = Encoding::Struct(
"MIDITransform",
&[<MIDITransformType>::ENCODING, <i16>::ENCODING],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDITransform {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MIDIControlTransform {
pub controlType: MIDITransformControlType,
pub remappedControlType: MIDITransformControlType,
pub controlNumber: u16,
pub transform: MIDITransformType,
pub param: i16,
}
#[cfg(feature = "objc2")]
unsafe impl Encode for MIDIControlTransform {
const ENCODING: Encoding = Encoding::Struct(
"MIDIControlTransform",
&[
<MIDITransformControlType>::ENCODING,
<MIDITransformControlType>::ENCODING,
<u16>::ENCODING,
<MIDITransformType>::ENCODING,
<i16>::ENCODING,
],
);
}
#[cfg(feature = "objc2")]
unsafe impl RefEncode for MIDIControlTransform {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[cfg(feature = "MIDIServices")]
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MIDIThruConnectionEndpoint {
pub endpointRef: MIDIEndpointRef,
pub uniqueID: MIDIUniqueID,
}
#[cfg(all(feature = "MIDIServices", feature = "objc2"))]
unsafe impl Encode for MIDIThruConnectionEndpoint {
const ENCODING: Encoding = Encoding::Struct(
"MIDIThruConnectionEndpoint",
&[<MIDIEndpointRef>::ENCODING, <MIDIUniqueID>::ENCODING],
);
}
#[cfg(all(feature = "MIDIServices", feature = "objc2"))]
unsafe impl RefEncode for MIDIThruConnectionEndpoint {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[cfg(feature = "MIDIServices")]
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MIDIThruConnectionParams {
pub version: u32,
pub numSources: u32,
pub sources: [MIDIThruConnectionEndpoint; 8],
pub numDestinations: u32,
pub destinations: [MIDIThruConnectionEndpoint; 8],
pub channelMap: [u8; 16],
pub lowVelocity: u8,
pub highVelocity: u8,
pub lowNote: u8,
pub highNote: u8,
pub noteNumber: MIDITransform,
pub velocity: MIDITransform,
pub keyPressure: MIDITransform,
pub channelPressure: MIDITransform,
pub programChange: MIDITransform,
pub pitchBend: MIDITransform,
pub filterOutSysEx: u8,
pub filterOutMTC: u8,
pub filterOutBeatClock: u8,
pub filterOutTuneRequest: u8,
pub reserved2: [u8; 3],
pub filterOutAllControls: u8,
pub numControlTransforms: u16,
pub numMaps: u16,
pub reserved3: [u16; 4],
}
#[cfg(all(feature = "MIDIServices", feature = "objc2"))]
unsafe impl Encode for MIDIThruConnectionParams {
const ENCODING: Encoding = Encoding::Struct(
"MIDIThruConnectionParams",
&[
<u32>::ENCODING,
<u32>::ENCODING,
<[MIDIThruConnectionEndpoint; 8]>::ENCODING,
<u32>::ENCODING,
<[MIDIThruConnectionEndpoint; 8]>::ENCODING,
<[u8; 16]>::ENCODING,
<u8>::ENCODING,
<u8>::ENCODING,
<u8>::ENCODING,
<u8>::ENCODING,
<MIDITransform>::ENCODING,
<MIDITransform>::ENCODING,
<MIDITransform>::ENCODING,
<MIDITransform>::ENCODING,
<MIDITransform>::ENCODING,
<MIDITransform>::ENCODING,
<u8>::ENCODING,
<u8>::ENCODING,
<u8>::ENCODING,
<u8>::ENCODING,
<[u8; 3]>::ENCODING,
<u8>::ENCODING,
<u16>::ENCODING,
<u16>::ENCODING,
<[u16; 4]>::ENCODING,
],
);
}
#[cfg(all(feature = "MIDIServices", feature = "objc2"))]
unsafe impl RefEncode for MIDIThruConnectionParams {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[cfg(feature = "MIDIServices")]
impl MIDIThruConnectionParams {
#[doc(alias = "MIDIThruConnectionParamsInitialize")]
#[cfg(feature = "MIDIServices")]
#[inline]
pub unsafe fn initialize(in_connection_params: NonNull<MIDIThruConnectionParams>) {
extern "C-unwind" {
fn MIDIThruConnectionParamsInitialize(
in_connection_params: NonNull<MIDIThruConnectionParams>,
);
}
unsafe { MIDIThruConnectionParamsInitialize(in_connection_params) }
}
}
extern "C-unwind" {
#[cfg(all(feature = "MIDIServices", feature = "objc2-core-foundation"))]
pub fn MIDIThruConnectionCreate(
in_persistent_owner_id: Option<&CFString>,
in_connection_params: &CFData,
out_connection: NonNull<MIDIThruConnectionRef>,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(feature = "MIDIServices")]
pub fn MIDIThruConnectionDispose(connection: MIDIThruConnectionRef) -> OSStatus;
}
extern "C-unwind" {
#[cfg(all(feature = "MIDIServices", feature = "objc2-core-foundation"))]
pub fn MIDIThruConnectionGetParams(
connection: MIDIThruConnectionRef,
out_connection_params: NonNull<NonNull<CFData>>,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(all(feature = "MIDIServices", feature = "objc2-core-foundation"))]
pub fn MIDIThruConnectionSetParams(
connection: MIDIThruConnectionRef,
in_connection_params: &CFData,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(feature = "objc2-core-foundation")]
pub fn MIDIThruConnectionFind(
in_persistent_owner_id: &CFString,
out_connection_list: NonNull<NonNull<CFData>>,
) -> OSStatus;
}
extern "C-unwind" {
#[cfg(feature = "MIDIServices")]
#[deprecated = "renamed to `MIDIThruConnectionParams::initialize`"]
pub fn MIDIThruConnectionParamsInitialize(
in_connection_params: NonNull<MIDIThruConnectionParams>,
);
}