use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MTLAttributeFormat(pub NSUInteger);
impl MTLAttributeFormat {
#[doc(alias = "MTLAttributeFormatInvalid")]
pub const Invalid: Self = Self(0);
#[doc(alias = "MTLAttributeFormatUChar2")]
pub const UChar2: Self = Self(1);
#[doc(alias = "MTLAttributeFormatUChar3")]
pub const UChar3: Self = Self(2);
#[doc(alias = "MTLAttributeFormatUChar4")]
pub const UChar4: Self = Self(3);
#[doc(alias = "MTLAttributeFormatChar2")]
pub const Char2: Self = Self(4);
#[doc(alias = "MTLAttributeFormatChar3")]
pub const Char3: Self = Self(5);
#[doc(alias = "MTLAttributeFormatChar4")]
pub const Char4: Self = Self(6);
#[doc(alias = "MTLAttributeFormatUChar2Normalized")]
pub const UChar2Normalized: Self = Self(7);
#[doc(alias = "MTLAttributeFormatUChar3Normalized")]
pub const UChar3Normalized: Self = Self(8);
#[doc(alias = "MTLAttributeFormatUChar4Normalized")]
pub const UChar4Normalized: Self = Self(9);
#[doc(alias = "MTLAttributeFormatChar2Normalized")]
pub const Char2Normalized: Self = Self(10);
#[doc(alias = "MTLAttributeFormatChar3Normalized")]
pub const Char3Normalized: Self = Self(11);
#[doc(alias = "MTLAttributeFormatChar4Normalized")]
pub const Char4Normalized: Self = Self(12);
#[doc(alias = "MTLAttributeFormatUShort2")]
pub const UShort2: Self = Self(13);
#[doc(alias = "MTLAttributeFormatUShort3")]
pub const UShort3: Self = Self(14);
#[doc(alias = "MTLAttributeFormatUShort4")]
pub const UShort4: Self = Self(15);
#[doc(alias = "MTLAttributeFormatShort2")]
pub const Short2: Self = Self(16);
#[doc(alias = "MTLAttributeFormatShort3")]
pub const Short3: Self = Self(17);
#[doc(alias = "MTLAttributeFormatShort4")]
pub const Short4: Self = Self(18);
#[doc(alias = "MTLAttributeFormatUShort2Normalized")]
pub const UShort2Normalized: Self = Self(19);
#[doc(alias = "MTLAttributeFormatUShort3Normalized")]
pub const UShort3Normalized: Self = Self(20);
#[doc(alias = "MTLAttributeFormatUShort4Normalized")]
pub const UShort4Normalized: Self = Self(21);
#[doc(alias = "MTLAttributeFormatShort2Normalized")]
pub const Short2Normalized: Self = Self(22);
#[doc(alias = "MTLAttributeFormatShort3Normalized")]
pub const Short3Normalized: Self = Self(23);
#[doc(alias = "MTLAttributeFormatShort4Normalized")]
pub const Short4Normalized: Self = Self(24);
#[doc(alias = "MTLAttributeFormatHalf2")]
pub const Half2: Self = Self(25);
#[doc(alias = "MTLAttributeFormatHalf3")]
pub const Half3: Self = Self(26);
#[doc(alias = "MTLAttributeFormatHalf4")]
pub const Half4: Self = Self(27);
#[doc(alias = "MTLAttributeFormatFloat")]
pub const Float: Self = Self(28);
#[doc(alias = "MTLAttributeFormatFloat2")]
pub const Float2: Self = Self(29);
#[doc(alias = "MTLAttributeFormatFloat3")]
pub const Float3: Self = Self(30);
#[doc(alias = "MTLAttributeFormatFloat4")]
pub const Float4: Self = Self(31);
#[doc(alias = "MTLAttributeFormatInt")]
pub const Int: Self = Self(32);
#[doc(alias = "MTLAttributeFormatInt2")]
pub const Int2: Self = Self(33);
#[doc(alias = "MTLAttributeFormatInt3")]
pub const Int3: Self = Self(34);
#[doc(alias = "MTLAttributeFormatInt4")]
pub const Int4: Self = Self(35);
#[doc(alias = "MTLAttributeFormatUInt")]
pub const UInt: Self = Self(36);
#[doc(alias = "MTLAttributeFormatUInt2")]
pub const UInt2: Self = Self(37);
#[doc(alias = "MTLAttributeFormatUInt3")]
pub const UInt3: Self = Self(38);
#[doc(alias = "MTLAttributeFormatUInt4")]
pub const UInt4: Self = Self(39);
#[doc(alias = "MTLAttributeFormatInt1010102Normalized")]
pub const Int1010102Normalized: Self = Self(40);
#[doc(alias = "MTLAttributeFormatUInt1010102Normalized")]
pub const UInt1010102Normalized: Self = Self(41);
#[doc(alias = "MTLAttributeFormatUChar4Normalized_BGRA")]
pub const UChar4Normalized_BGRA: Self = Self(42);
#[doc(alias = "MTLAttributeFormatUChar")]
pub const UChar: Self = Self(45);
#[doc(alias = "MTLAttributeFormatChar")]
pub const Char: Self = Self(46);
#[doc(alias = "MTLAttributeFormatUCharNormalized")]
pub const UCharNormalized: Self = Self(47);
#[doc(alias = "MTLAttributeFormatCharNormalized")]
pub const CharNormalized: Self = Self(48);
#[doc(alias = "MTLAttributeFormatUShort")]
pub const UShort: Self = Self(49);
#[doc(alias = "MTLAttributeFormatShort")]
pub const Short: Self = Self(50);
#[doc(alias = "MTLAttributeFormatUShortNormalized")]
pub const UShortNormalized: Self = Self(51);
#[doc(alias = "MTLAttributeFormatShortNormalized")]
pub const ShortNormalized: Self = Self(52);
#[doc(alias = "MTLAttributeFormatHalf")]
pub const Half: Self = Self(53);
#[doc(alias = "MTLAttributeFormatFloatRG11B10")]
pub const FloatRG11B10: Self = Self(54);
#[doc(alias = "MTLAttributeFormatFloatRGB9E5")]
pub const FloatRGB9E5: Self = Self(55);
}
unsafe impl Encode for MTLAttributeFormat {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for MTLAttributeFormat {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MTLStepFunction(pub NSUInteger);
impl MTLStepFunction {
#[doc(alias = "MTLStepFunctionConstant")]
pub const Constant: Self = Self(0);
#[doc(alias = "MTLStepFunctionPerVertex")]
pub const PerVertex: Self = Self(1);
#[doc(alias = "MTLStepFunctionPerInstance")]
pub const PerInstance: Self = Self(2);
#[doc(alias = "MTLStepFunctionPerPatch")]
pub const PerPatch: Self = Self(3);
#[doc(alias = "MTLStepFunctionPerPatchControlPoint")]
pub const PerPatchControlPoint: Self = Self(4);
#[doc(alias = "MTLStepFunctionThreadPositionInGridX")]
pub const ThreadPositionInGridX: Self = Self(5);
#[doc(alias = "MTLStepFunctionThreadPositionInGridY")]
pub const ThreadPositionInGridY: Self = Self(6);
#[doc(alias = "MTLStepFunctionThreadPositionInGridXIndexed")]
pub const ThreadPositionInGridXIndexed: Self = Self(7);
#[doc(alias = "MTLStepFunctionThreadPositionInGridYIndexed")]
pub const ThreadPositionInGridYIndexed: Self = Self(8);
}
unsafe impl Encode for MTLStepFunction {
const ENCODING: Encoding = NSUInteger::ENCODING;
}
unsafe impl RefEncode for MTLStepFunction {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
extern_class!(
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct MTLBufferLayoutDescriptor;
);
extern_conformance!(
unsafe impl NSCopying for MTLBufferLayoutDescriptor {}
);
unsafe impl CopyingHelper for MTLBufferLayoutDescriptor {
type Result = Self;
}
extern_conformance!(
unsafe impl NSObjectProtocol for MTLBufferLayoutDescriptor {}
);
impl MTLBufferLayoutDescriptor {
extern_methods!(
#[unsafe(method(stride))]
#[unsafe(method_family = none)]
pub fn stride(&self) -> NSUInteger;
#[unsafe(method(setStride:))]
#[unsafe(method_family = none)]
pub fn setStride(&self, stride: NSUInteger);
#[unsafe(method(stepFunction))]
#[unsafe(method_family = none)]
pub fn stepFunction(&self) -> MTLStepFunction;
#[unsafe(method(setStepFunction:))]
#[unsafe(method_family = none)]
pub fn setStepFunction(&self, step_function: MTLStepFunction);
#[unsafe(method(stepRate))]
#[unsafe(method_family = none)]
pub fn stepRate(&self) -> NSUInteger;
#[unsafe(method(setStepRate:))]
#[unsafe(method_family = none)]
pub fn setStepRate(&self, step_rate: NSUInteger);
);
}
impl MTLBufferLayoutDescriptor {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub fn new() -> Retained<Self>;
);
}
impl DefaultRetained for MTLBufferLayoutDescriptor {
#[inline]
fn default_retained() -> Retained<Self> {
Self::new()
}
}
extern_class!(
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct MTLBufferLayoutDescriptorArray;
);
extern_conformance!(
unsafe impl NSObjectProtocol for MTLBufferLayoutDescriptorArray {}
);
impl MTLBufferLayoutDescriptorArray {
extern_methods!(
#[unsafe(method(objectAtIndexedSubscript:))]
#[unsafe(method_family = none)]
pub unsafe fn objectAtIndexedSubscript(
&self,
index: NSUInteger,
) -> Retained<MTLBufferLayoutDescriptor>;
#[unsafe(method(setObject:atIndexedSubscript:))]
#[unsafe(method_family = none)]
pub unsafe fn setObject_atIndexedSubscript(
&self,
buffer_desc: Option<&MTLBufferLayoutDescriptor>,
index: NSUInteger,
);
);
}
impl MTLBufferLayoutDescriptorArray {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub fn new() -> Retained<Self>;
);
}
impl DefaultRetained for MTLBufferLayoutDescriptorArray {
#[inline]
fn default_retained() -> Retained<Self> {
Self::new()
}
}
extern_class!(
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct MTLAttributeDescriptor;
);
extern_conformance!(
unsafe impl NSCopying for MTLAttributeDescriptor {}
);
unsafe impl CopyingHelper for MTLAttributeDescriptor {
type Result = Self;
}
extern_conformance!(
unsafe impl NSObjectProtocol for MTLAttributeDescriptor {}
);
impl MTLAttributeDescriptor {
extern_methods!(
#[unsafe(method(format))]
#[unsafe(method_family = none)]
pub fn format(&self) -> MTLAttributeFormat;
#[unsafe(method(setFormat:))]
#[unsafe(method_family = none)]
pub fn setFormat(&self, format: MTLAttributeFormat);
#[unsafe(method(offset))]
#[unsafe(method_family = none)]
pub fn offset(&self) -> NSUInteger;
#[unsafe(method(setOffset:))]
#[unsafe(method_family = none)]
pub fn setOffset(&self, offset: NSUInteger);
#[unsafe(method(bufferIndex))]
#[unsafe(method_family = none)]
pub fn bufferIndex(&self) -> NSUInteger;
#[unsafe(method(setBufferIndex:))]
#[unsafe(method_family = none)]
pub unsafe fn setBufferIndex(&self, buffer_index: NSUInteger);
);
}
impl MTLAttributeDescriptor {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub fn new() -> Retained<Self>;
);
}
impl DefaultRetained for MTLAttributeDescriptor {
#[inline]
fn default_retained() -> Retained<Self> {
Self::new()
}
}
extern_class!(
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct MTLAttributeDescriptorArray;
);
extern_conformance!(
unsafe impl NSObjectProtocol for MTLAttributeDescriptorArray {}
);
impl MTLAttributeDescriptorArray {
extern_methods!(
#[unsafe(method(objectAtIndexedSubscript:))]
#[unsafe(method_family = none)]
pub unsafe fn objectAtIndexedSubscript(
&self,
index: NSUInteger,
) -> Retained<MTLAttributeDescriptor>;
#[unsafe(method(setObject:atIndexedSubscript:))]
#[unsafe(method_family = none)]
pub unsafe fn setObject_atIndexedSubscript(
&self,
attribute_desc: Option<&MTLAttributeDescriptor>,
index: NSUInteger,
);
);
}
impl MTLAttributeDescriptorArray {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub fn new() -> Retained<Self>;
);
}
impl DefaultRetained for MTLAttributeDescriptorArray {
#[inline]
fn default_retained() -> Retained<Self> {
Self::new()
}
}
extern_class!(
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct MTLStageInputOutputDescriptor;
);
extern_conformance!(
unsafe impl NSCopying for MTLStageInputOutputDescriptor {}
);
unsafe impl CopyingHelper for MTLStageInputOutputDescriptor {
type Result = Self;
}
extern_conformance!(
unsafe impl NSObjectProtocol for MTLStageInputOutputDescriptor {}
);
impl MTLStageInputOutputDescriptor {
extern_methods!(
#[unsafe(method(stageInputOutputDescriptor))]
#[unsafe(method_family = none)]
pub fn stageInputOutputDescriptor() -> Retained<MTLStageInputOutputDescriptor>;
#[unsafe(method(layouts))]
#[unsafe(method_family = none)]
pub fn layouts(&self) -> Retained<MTLBufferLayoutDescriptorArray>;
#[unsafe(method(attributes))]
#[unsafe(method_family = none)]
pub fn attributes(&self) -> Retained<MTLAttributeDescriptorArray>;
#[cfg(feature = "MTLArgument")]
#[unsafe(method(indexType))]
#[unsafe(method_family = none)]
pub fn indexType(&self) -> MTLIndexType;
#[cfg(feature = "MTLArgument")]
#[unsafe(method(setIndexType:))]
#[unsafe(method_family = none)]
pub fn setIndexType(&self, index_type: MTLIndexType);
#[unsafe(method(indexBufferIndex))]
#[unsafe(method_family = none)]
pub fn indexBufferIndex(&self) -> NSUInteger;
#[unsafe(method(setIndexBufferIndex:))]
#[unsafe(method_family = none)]
pub unsafe fn setIndexBufferIndex(&self, index_buffer_index: NSUInteger);
#[unsafe(method(reset))]
#[unsafe(method_family = none)]
pub fn reset(&self);
);
}
impl MTLStageInputOutputDescriptor {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub fn new() -> Retained<Self>;
);
}
impl DefaultRetained for MTLStageInputOutputDescriptor {
#[inline]
fn default_retained() -> Retained<Self> {
Self::new()
}
}