//! This file has been automatically generated by `objc2`'s `header-translator`. //! DO NOT EDIT use core::ffi::*; use core::ptr::NonNull; use objc2::__framework_prelude::*; use objc2_foundation::*; use crate::*; /// Configuration options for pipeline dataset serializer objects. /// /// Use these options to enable different functionality in instances of ``MTL4PipelineDataSetSerializer``. /// /// You can combine these values via a logical `OR` and set it to ``MTL4PipelineDataSetSerializerDescriptor/configuration`` /// to specify desired level of serialization support for instances of ``MTL4PipelineDataSetSerializer``. /// /// See also [Apple's documentation](https://developer.apple.com/documentation/metal/mtl4pipelinedatasetserializerconfiguration?language=objc) // NS_OPTIONS #[repr(transparent)] #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)] pub struct MTL4PipelineDataSetSerializerConfiguration(pub NSUInteger); bitflags::bitflags! { impl MTL4PipelineDataSetSerializerConfiguration: NSUInteger { /// Enables serializing pipeline scripts. /// /// Set this mask to use ``MTL4PipelineDataSetSerializer.serializeAsPipelinesScriptWithError``. /// /// This for the default behavior. #[doc(alias = "MTL4PipelineDataSetSerializerConfigurationCaptureDescriptors")] const CaptureDescriptors = 1<<0; /// Enables serializing pipeline binary functions. /// /// Set this mask to use ``MTL4PipelineDataSetSerializer.serializeAsArchiveAndFlush(toURL:error:)``. #[doc(alias = "MTL4PipelineDataSetSerializerConfigurationCaptureBinaries")] const CaptureBinaries = 1<<1; } } unsafe impl Encode for MTL4PipelineDataSetSerializerConfiguration { const ENCODING: Encoding = NSUInteger::ENCODING; } unsafe impl RefEncode for MTL4PipelineDataSetSerializerConfiguration { const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING); } extern_class!( /// Groups together properties to create a pipeline data set serializer. /// /// See also [Apple's documentation](https://developer.apple.com/documentation/metal/mtl4pipelinedatasetserializerdescriptor?language=objc) #[unsafe(super(NSObject))] #[derive(Debug, PartialEq, Eq, Hash)] pub struct MTL4PipelineDataSetSerializerDescriptor; ); extern_conformance!( unsafe impl NSCopying for MTL4PipelineDataSetSerializerDescriptor {} ); unsafe impl CopyingHelper for MTL4PipelineDataSetSerializerDescriptor { type Result = Self; } extern_conformance!( unsafe impl NSObjectProtocol for MTL4PipelineDataSetSerializerDescriptor {} ); impl MTL4PipelineDataSetSerializerDescriptor { extern_methods!( /// Specifies the configuration of the serialization process. /// /// The configuration of the serialization process determines the mechanisms you use to serialize pipeline data sets. /// /// When this configuration contains ``MTL4PipelineDataSetSerializerConfigurationCaptureDescriptors``, use /// ``serializeAsPipelinesScriptWithError:`` to serialize pipeline scripts. /// /// If this option contains ``MTL4PipelineDataSetSerializerConfigurationCaptureBinaries``, the serializer can additionally /// serialize to a binary archive by calling ``serializeAsArchiveAndFlushToURL:error::``. #[unsafe(method(configuration))] #[unsafe(method_family = none)] pub fn configuration(&self) -> MTL4PipelineDataSetSerializerConfiguration; /// Setter for [`configuration`][Self::configuration]. #[unsafe(method(setConfiguration:))] #[unsafe(method_family = none)] pub fn setConfiguration(&self, configuration: MTL4PipelineDataSetSerializerConfiguration); ); } /// Methods declared on superclass `NSObject`. impl MTL4PipelineDataSetSerializerDescriptor { extern_methods!( #[unsafe(method(init))] #[unsafe(method_family = init)] pub fn init(this: Allocated) -> Retained; #[unsafe(method(new))] #[unsafe(method_family = new)] pub fn new() -> Retained; ); } impl DefaultRetained for MTL4PipelineDataSetSerializerDescriptor { #[inline] fn default_retained() -> Retained { Self::new() } } extern_protocol!( /// A fast-addition container for collecting data during pipeline state creation. /// /// Pipeline data serializer instances allow you to create binary archives and serialize pipeline scripts to use with /// the offline Metal binary generator (`metal-tt`) /// . /// /// You capture and retain all relevant data for all pipelines a compiler instance creates by providing an instance of /// this object to its ``MTL4CompilerDescriptor``. /// /// After capturing data, you can serialize it to a binary archive to persist its contents offline by calling /// ``serializeAsArchiveAndFlushToURL:error:``. You can also serialize a pipeline script suitable for the offline binary /// generator (`metal-tt`) by calling ``serializeAsPipelinesScriptWithError:`` /// /// - Note: The objects ``MTL4PipelineDataSetSerializer`` contains are opaque and can't accelerate compilation for /// compilers they are not attached to. Additionally, your program can't read data out of data set serializer instances. /// /// See also [Apple's documentation](https://developer.apple.com/documentation/metal/mtl4pipelinedatasetserializer?language=objc) pub unsafe trait MTL4PipelineDataSetSerializer: NSObjectProtocol { /// Serializes a pipeline data set to an archive. /// /// - Parameters: /// - url: the URL used to serialize the serializer data set as an archive to. /// - error: an optional parameter to store information in case of an error. /// - Returns: a boolean indicating whether the operation was successful. #[unsafe(method(serializeAsArchiveAndFlushToURL:error:_))] #[unsafe(method_family = none)] fn serializeAsArchiveAndFlushToURL_error( &self, url: &NSURL, ) -> Result<(), Retained>; /// Serializes a serializer data set to a pipeline script as raw data. /// /// - Parameters: /// - error: an optional parameter to store information in case of an error. /// - Returns: an `NSData` instance containing the pipeline script. #[unsafe(method(serializeAsPipelinesScriptWithError:_))] #[unsafe(method_family = none)] fn serializeAsPipelinesScriptWithError( &self, ) -> Result, Retained>; } );