objc2_core_ml/generated/
MLModelConfiguration.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6use objc2_foundation::*;
7#[cfg(feature = "objc2-metal")]
8#[cfg(not(target_os = "watchos"))]
9use objc2_metal::*;
10
11use crate::*;
12
13/// [Apple's documentation](https://developer.apple.com/documentation/coreml/mlcomputeunits?language=objc)
14// NS_ENUM
15#[repr(transparent)]
16#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
17pub struct MLComputeUnits(pub NSInteger);
18impl MLComputeUnits {
19    #[doc(alias = "MLComputeUnitsCPUOnly")]
20    pub const CPUOnly: Self = Self(0);
21    #[doc(alias = "MLComputeUnitsCPUAndGPU")]
22    pub const CPUAndGPU: Self = Self(1);
23    #[doc(alias = "MLComputeUnitsAll")]
24    pub const All: Self = Self(2);
25    #[doc(alias = "MLComputeUnitsCPUAndNeuralEngine")]
26    pub const CPUAndNeuralEngine: Self = Self(3);
27}
28
29unsafe impl Encode for MLComputeUnits {
30    const ENCODING: Encoding = NSInteger::ENCODING;
31}
32
33unsafe impl RefEncode for MLComputeUnits {
34    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
35}
36
37extern_class!(
38    /// An object to hold options for loading a model.
39    ///
40    /// See also [Apple's documentation](https://developer.apple.com/documentation/coreml/mlmodelconfiguration?language=objc)
41    #[unsafe(super(NSObject))]
42    #[derive(Debug, PartialEq, Eq, Hash)]
43    pub struct MLModelConfiguration;
44);
45
46extern_conformance!(
47    unsafe impl NSCoding for MLModelConfiguration {}
48);
49
50extern_conformance!(
51    unsafe impl NSCopying for MLModelConfiguration {}
52);
53
54unsafe impl CopyingHelper for MLModelConfiguration {
55    type Result = Self;
56}
57
58extern_conformance!(
59    unsafe impl NSObjectProtocol for MLModelConfiguration {}
60);
61
62extern_conformance!(
63    unsafe impl NSSecureCoding for MLModelConfiguration {}
64);
65
66impl MLModelConfiguration {
67    extern_methods!(
68        /// A human readable name of a MLModel instance for display purposes.
69        ///
70        /// Use this property to set a name of a model instance so that runtime analysis tools (e.g. Instruments and os_log)
71        /// can display that name in the user interface.
72        ///
73        /// CoreML framework doesn't parse nor filter the text. It is the client's responsibility to use appropriate text,
74        /// which may involve localization and privacy considerations.
75        ///
76        /// When the property is nil, CoreML framework provides a default.
77        #[unsafe(method(modelDisplayName))]
78        #[unsafe(method_family = none)]
79        pub unsafe fn modelDisplayName(&self) -> Option<Retained<NSString>>;
80
81        /// Setter for [`modelDisplayName`][Self::modelDisplayName].
82        ///
83        /// This is [copied][objc2_foundation::NSCopying::copy] when set.
84        #[unsafe(method(setModelDisplayName:))]
85        #[unsafe(method_family = none)]
86        pub unsafe fn setModelDisplayName(&self, model_display_name: Option<&NSString>);
87
88        #[unsafe(method(computeUnits))]
89        #[unsafe(method_family = none)]
90        pub unsafe fn computeUnits(&self) -> MLComputeUnits;
91
92        /// Setter for [`computeUnits`][Self::computeUnits].
93        #[unsafe(method(setComputeUnits:))]
94        #[unsafe(method_family = none)]
95        pub unsafe fn setComputeUnits(&self, compute_units: MLComputeUnits);
96
97        #[cfg(feature = "MLOptimizationHints")]
98        /// A group of hints for CoreML to optimize
99        #[unsafe(method(optimizationHints))]
100        #[unsafe(method_family = none)]
101        pub unsafe fn optimizationHints(&self) -> Retained<MLOptimizationHints>;
102
103        #[cfg(feature = "MLOptimizationHints")]
104        /// Setter for [`optimizationHints`][Self::optimizationHints].
105        ///
106        /// This is [copied][objc2_foundation::NSCopying::copy] when set.
107        #[unsafe(method(setOptimizationHints:))]
108        #[unsafe(method_family = none)]
109        pub unsafe fn setOptimizationHints(&self, optimization_hints: &MLOptimizationHints);
110    );
111}
112
113/// Methods declared on superclass `NSObject`.
114impl MLModelConfiguration {
115    extern_methods!(
116        #[unsafe(method(init))]
117        #[unsafe(method_family = init)]
118        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
119
120        #[unsafe(method(new))]
121        #[unsafe(method_family = new)]
122        pub unsafe fn new() -> Retained<Self>;
123    );
124}
125
126/// MLGPUConfigurationOptions.
127///
128/// Allows app to specify  GPU configuration options
129impl MLModelConfiguration {
130    extern_methods!(
131        /// Set to YES to allow low precision accumulation on GPU when available. Defaults to NO
132        #[unsafe(method(allowLowPrecisionAccumulationOnGPU))]
133        #[unsafe(method_family = none)]
134        pub unsafe fn allowLowPrecisionAccumulationOnGPU(&self) -> bool;
135
136        /// Setter for [`allowLowPrecisionAccumulationOnGPU`][Self::allowLowPrecisionAccumulationOnGPU].
137        #[unsafe(method(setAllowLowPrecisionAccumulationOnGPU:))]
138        #[unsafe(method_family = none)]
139        pub unsafe fn setAllowLowPrecisionAccumulationOnGPU(
140            &self,
141            allow_low_precision_accumulation_on_gpu: bool,
142        );
143
144        #[cfg(feature = "objc2-metal")]
145        #[cfg(not(target_os = "watchos"))]
146        /// Set to specify a preferred Metal device. Defaults to nil which indicates automatic selection
147        #[unsafe(method(preferredMetalDevice))]
148        #[unsafe(method_family = none)]
149        pub unsafe fn preferredMetalDevice(
150            &self,
151        ) -> Option<Retained<ProtocolObject<dyn MTLDevice>>>;
152
153        #[cfg(feature = "objc2-metal")]
154        #[cfg(not(target_os = "watchos"))]
155        /// Setter for [`preferredMetalDevice`][Self::preferredMetalDevice].
156        #[unsafe(method(setPreferredMetalDevice:))]
157        #[unsafe(method_family = none)]
158        pub unsafe fn setPreferredMetalDevice(
159            &self,
160            preferred_metal_device: Option<&ProtocolObject<dyn MTLDevice>>,
161        );
162    );
163}
164
165/// MLModelParameterAdditions.
166///
167/// Allows app to set model or update parameters as a dictionary.
168impl MLModelConfiguration {
169    extern_methods!(
170        #[cfg(all(feature = "MLKey", feature = "MLParameterKey"))]
171        #[unsafe(method(parameters))]
172        #[unsafe(method_family = none)]
173        pub unsafe fn parameters(
174            &self,
175        ) -> Option<Retained<NSDictionary<MLParameterKey, AnyObject>>>;
176
177        #[cfg(all(feature = "MLKey", feature = "MLParameterKey"))]
178        /// Setter for [`parameters`][Self::parameters].
179        ///
180        /// # Safety
181        ///
182        /// `parameters` generic should be of the correct type.
183        #[unsafe(method(setParameters:))]
184        #[unsafe(method_family = none)]
185        pub unsafe fn setParameters(
186            &self,
187            parameters: Option<&NSDictionary<MLParameterKey, AnyObject>>,
188        );
189    );
190}
191
192/// MultiFunctions.
193impl MLModelConfiguration {
194    extern_methods!(
195        /// Function name that `MLModel` will use.
196        ///
197        /// Some model types (e.g. ML Program) supports multiple functions in a model asset, where each `MLModel` instance is associated with a particular function.
198        ///
199        /// Use `MLModelAsset` to get the list of available functions. Use `nil` to use a default function.
200        ///
201        /// ```swift
202        /// let configuration = MLModelConfiguration()
203        /// configuration.functionName = "my_function"
204        /// ```
205        #[unsafe(method(functionName))]
206        #[unsafe(method_family = none)]
207        pub unsafe fn functionName(&self) -> Option<Retained<NSString>>;
208
209        /// Setter for [`functionName`][Self::functionName].
210        ///
211        /// This is [copied][objc2_foundation::NSCopying::copy] when set.
212        #[unsafe(method(setFunctionName:))]
213        #[unsafe(method_family = none)]
214        pub unsafe fn setFunctionName(&self, function_name: Option<&NSString>);
215    );
216}