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        #[unsafe(method(setModelDisplayName:))]
83        #[unsafe(method_family = none)]
84        pub unsafe fn setModelDisplayName(&self, model_display_name: Option<&NSString>);
85
86        #[unsafe(method(computeUnits))]
87        #[unsafe(method_family = none)]
88        pub unsafe fn computeUnits(&self) -> MLComputeUnits;
89
90        /// Setter for [`computeUnits`][Self::computeUnits].
91        #[unsafe(method(setComputeUnits:))]
92        #[unsafe(method_family = none)]
93        pub unsafe fn setComputeUnits(&self, compute_units: MLComputeUnits);
94
95        #[cfg(feature = "MLOptimizationHints")]
96        /// A group of hints for CoreML to optimize
97        #[unsafe(method(optimizationHints))]
98        #[unsafe(method_family = none)]
99        pub unsafe fn optimizationHints(&self) -> Retained<MLOptimizationHints>;
100
101        #[cfg(feature = "MLOptimizationHints")]
102        /// Setter for [`optimizationHints`][Self::optimizationHints].
103        #[unsafe(method(setOptimizationHints:))]
104        #[unsafe(method_family = none)]
105        pub unsafe fn setOptimizationHints(&self, optimization_hints: &MLOptimizationHints);
106    );
107}
108
109/// Methods declared on superclass `NSObject`.
110impl MLModelConfiguration {
111    extern_methods!(
112        #[unsafe(method(init))]
113        #[unsafe(method_family = init)]
114        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
115
116        #[unsafe(method(new))]
117        #[unsafe(method_family = new)]
118        pub unsafe fn new() -> Retained<Self>;
119    );
120}
121
122/// MLGPUConfigurationOptions.
123/// Allows app to specify  GPU configuration options
124impl MLModelConfiguration {
125    extern_methods!(
126        /// Set to YES to allow low precision accumulation on GPU when available. Defaults to NO
127        #[unsafe(method(allowLowPrecisionAccumulationOnGPU))]
128        #[unsafe(method_family = none)]
129        pub unsafe fn allowLowPrecisionAccumulationOnGPU(&self) -> bool;
130
131        /// Setter for [`allowLowPrecisionAccumulationOnGPU`][Self::allowLowPrecisionAccumulationOnGPU].
132        #[unsafe(method(setAllowLowPrecisionAccumulationOnGPU:))]
133        #[unsafe(method_family = none)]
134        pub unsafe fn setAllowLowPrecisionAccumulationOnGPU(
135            &self,
136            allow_low_precision_accumulation_on_gpu: bool,
137        );
138
139        #[cfg(feature = "objc2-metal")]
140        #[cfg(not(target_os = "watchos"))]
141        /// Set to specify a preferred Metal device. Defaults to nil which indicates automatic selection
142        #[unsafe(method(preferredMetalDevice))]
143        #[unsafe(method_family = none)]
144        pub unsafe fn preferredMetalDevice(
145            &self,
146        ) -> Option<Retained<ProtocolObject<dyn MTLDevice>>>;
147
148        #[cfg(feature = "objc2-metal")]
149        #[cfg(not(target_os = "watchos"))]
150        /// Setter for [`preferredMetalDevice`][Self::preferredMetalDevice].
151        #[unsafe(method(setPreferredMetalDevice:))]
152        #[unsafe(method_family = none)]
153        pub unsafe fn setPreferredMetalDevice(
154            &self,
155            preferred_metal_device: Option<&ProtocolObject<dyn MTLDevice>>,
156        );
157    );
158}
159
160/// MLModelParameterAdditions.
161/// Allows app to set model or update parameters as a dictionary.
162impl MLModelConfiguration {
163    extern_methods!(
164        #[cfg(all(feature = "MLKey", feature = "MLParameterKey"))]
165        #[unsafe(method(parameters))]
166        #[unsafe(method_family = none)]
167        pub unsafe fn parameters(
168            &self,
169        ) -> Option<Retained<NSDictionary<MLParameterKey, AnyObject>>>;
170
171        #[cfg(all(feature = "MLKey", feature = "MLParameterKey"))]
172        /// Setter for [`parameters`][Self::parameters].
173        #[unsafe(method(setParameters:))]
174        #[unsafe(method_family = none)]
175        pub unsafe fn setParameters(
176            &self,
177            parameters: Option<&NSDictionary<MLParameterKey, AnyObject>>,
178        );
179    );
180}
181
182/// MultiFunctions.
183impl MLModelConfiguration {
184    extern_methods!(
185        /// Function name that `MLModel` will use.
186        ///
187        /// Some model types (e.g. ML Program) supports multiple functions in a model asset, where each `MLModel` instance is associated with a particular function.
188        ///
189        /// Use `MLModelAsset` to get the list of available functions. Use `nil` to use a default function.
190        ///
191        /// ```swift
192        /// let configuration = MLModelConfiguration()
193        /// configuration.functionName = "my_function"
194        /// ```
195        #[unsafe(method(functionName))]
196        #[unsafe(method_family = none)]
197        pub unsafe fn functionName(&self) -> Option<Retained<NSString>>;
198
199        /// Setter for [`functionName`][Self::functionName].
200        #[unsafe(method(setFunctionName:))]
201        #[unsafe(method_family = none)]
202        pub unsafe fn setFunctionName(&self, function_name: Option<&NSString>);
203    );
204}