use core::ptr::NonNull;
#[cfg(feature = "objc2")]
use objc2::__framework_prelude::*;
use objc2_core_foundation::*;
#[cfg(feature = "objc2-metal")]
#[cfg(not(target_os = "watchos"))]
use objc2_metal::*;
use crate::*;
#[doc(alias = "CVMetalBufferRef")]
#[cfg(feature = "CVBuffer")]
pub type CVMetalBuffer = CVBuffer;
#[inline]
pub extern "C-unwind" fn CVMetalBufferGetTypeID() -> CFTypeID {
extern "C-unwind" {
fn CVMetalBufferGetTypeID() -> CFTypeID;
}
unsafe { CVMetalBufferGetTypeID() }
}
#[cfg(all(feature = "CVBuffer", feature = "objc2", feature = "objc2-metal"))]
#[cfg(not(target_os = "watchos"))]
#[inline]
pub extern "C-unwind" fn CVMetalBufferGetBuffer(
buffer: &CVMetalBuffer,
) -> Option<Retained<ProtocolObject<dyn MTLBuffer>>> {
extern "C-unwind" {
fn CVMetalBufferGetBuffer(buffer: &CVMetalBuffer) -> *mut ProtocolObject<dyn MTLBuffer>;
}
let ret = unsafe { CVMetalBufferGetBuffer(buffer) };
unsafe { Retained::retain_autoreleased(ret) }
}