objc2_foundation/generated/
NSProcessInfo.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::*;
6
7use crate::*;
8
9/// [Apple's documentation](https://developer.apple.com/documentation/foundation/nswindowsntoperatingsystem?language=objc)
10#[deprecated = "Not supported"]
11pub const NSWindowsNTOperatingSystem: c_uint = 1;
12/// [Apple's documentation](https://developer.apple.com/documentation/foundation/nswindows95operatingsystem?language=objc)
13#[deprecated = "Not supported"]
14pub const NSWindows95OperatingSystem: c_uint = 2;
15/// [Apple's documentation](https://developer.apple.com/documentation/foundation/nssolarisoperatingsystem?language=objc)
16#[deprecated = "Not supported"]
17pub const NSSolarisOperatingSystem: c_uint = 3;
18/// [Apple's documentation](https://developer.apple.com/documentation/foundation/nshpuxoperatingsystem?language=objc)
19#[deprecated = "Not supported"]
20pub const NSHPUXOperatingSystem: c_uint = 4;
21/// [Apple's documentation](https://developer.apple.com/documentation/foundation/nsmachoperatingsystem?language=objc)
22#[deprecated = "Not supported"]
23pub const NSMACHOperatingSystem: c_uint = 5;
24/// [Apple's documentation](https://developer.apple.com/documentation/foundation/nssunosoperatingsystem?language=objc)
25#[deprecated = "Not supported"]
26pub const NSSunOSOperatingSystem: c_uint = 6;
27/// [Apple's documentation](https://developer.apple.com/documentation/foundation/nsosf1operatingsystem?language=objc)
28#[deprecated = "Not supported"]
29pub const NSOSF1OperatingSystem: c_uint = 7;
30
31/// [Apple's documentation](https://developer.apple.com/documentation/foundation/nsoperatingsystemversion?language=objc)
32#[repr(C)]
33#[derive(Clone, Copy, Debug, PartialEq)]
34pub struct NSOperatingSystemVersion {
35    pub majorVersion: NSInteger,
36    pub minorVersion: NSInteger,
37    pub patchVersion: NSInteger,
38}
39
40unsafe impl Encode for NSOperatingSystemVersion {
41    const ENCODING: Encoding = Encoding::Struct(
42        "?",
43        &[
44            <NSInteger>::ENCODING,
45            <NSInteger>::ENCODING,
46            <NSInteger>::ENCODING,
47        ],
48    );
49}
50
51unsafe impl RefEncode for NSOperatingSystemVersion {
52    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
53}
54
55unsafe impl Send for NSOperatingSystemVersion {}
56
57unsafe impl Sync for NSOperatingSystemVersion {}
58
59extern_class!(
60    /// [Apple's documentation](https://developer.apple.com/documentation/foundation/nsprocessinfo?language=objc)
61    #[unsafe(super(NSObject))]
62    #[derive(PartialEq, Eq, Hash)]
63    pub struct NSProcessInfo;
64);
65
66unsafe impl Send for NSProcessInfo {}
67
68unsafe impl Sync for NSProcessInfo {}
69
70extern_conformance!(
71    unsafe impl NSObjectProtocol for NSProcessInfo {}
72);
73
74impl NSProcessInfo {
75    extern_methods!(
76        #[unsafe(method(processInfo))]
77        #[unsafe(method_family = none)]
78        pub fn processInfo() -> Retained<NSProcessInfo>;
79
80        #[cfg(all(feature = "NSDictionary", feature = "NSString"))]
81        #[unsafe(method(environment))]
82        #[unsafe(method_family = none)]
83        pub fn environment(&self) -> Retained<NSDictionary<NSString, NSString>>;
84
85        #[cfg(all(feature = "NSArray", feature = "NSString"))]
86        #[unsafe(method(arguments))]
87        #[unsafe(method_family = none)]
88        pub fn arguments(&self) -> Retained<NSArray<NSString>>;
89
90        #[cfg(feature = "NSString")]
91        #[unsafe(method(hostName))]
92        #[unsafe(method_family = none)]
93        pub fn hostName(&self) -> Retained<NSString>;
94
95        #[cfg(feature = "NSString")]
96        #[unsafe(method(processName))]
97        #[unsafe(method_family = none)]
98        pub fn processName(&self) -> Retained<NSString>;
99
100        #[cfg(feature = "NSString")]
101        /// Setter for [`processName`][Self::processName].
102        ///
103        /// This is [copied][crate::NSCopying::copy] when set.
104        #[unsafe(method(setProcessName:))]
105        #[unsafe(method_family = none)]
106        pub fn setProcessName(&self, process_name: &NSString);
107
108        #[unsafe(method(processIdentifier))]
109        #[unsafe(method_family = none)]
110        pub fn processIdentifier(&self) -> c_int;
111
112        #[cfg(feature = "NSString")]
113        #[unsafe(method(globallyUniqueString))]
114        #[unsafe(method_family = none)]
115        pub fn globallyUniqueString(&self) -> Retained<NSString>;
116
117        #[deprecated = "-operatingSystem always returns NSMACHOperatingSystem, use -operatingSystemVersion or -isOperatingSystemAtLeastVersion: instead"]
118        #[unsafe(method(operatingSystem))]
119        #[unsafe(method_family = none)]
120        pub fn operatingSystem(&self) -> NSUInteger;
121
122        #[cfg(feature = "NSString")]
123        #[deprecated = "-operatingSystemName always returns NSMACHOperatingSystem, use -operatingSystemVersionString instead"]
124        #[unsafe(method(operatingSystemName))]
125        #[unsafe(method_family = none)]
126        pub fn operatingSystemName(&self) -> Retained<NSString>;
127
128        #[cfg(feature = "NSString")]
129        #[unsafe(method(operatingSystemVersionString))]
130        #[unsafe(method_family = none)]
131        pub fn operatingSystemVersionString(&self) -> Retained<NSString>;
132
133        #[unsafe(method(operatingSystemVersion))]
134        #[unsafe(method_family = none)]
135        pub fn operatingSystemVersion(&self) -> NSOperatingSystemVersion;
136
137        #[unsafe(method(processorCount))]
138        #[unsafe(method_family = none)]
139        pub fn processorCount(&self) -> NSUInteger;
140
141        #[unsafe(method(activeProcessorCount))]
142        #[unsafe(method_family = none)]
143        pub fn activeProcessorCount(&self) -> NSUInteger;
144
145        #[unsafe(method(physicalMemory))]
146        #[unsafe(method_family = none)]
147        pub fn physicalMemory(&self) -> c_ulonglong;
148
149        #[unsafe(method(isOperatingSystemAtLeastVersion:))]
150        #[unsafe(method_family = none)]
151        pub fn isOperatingSystemAtLeastVersion(&self, version: NSOperatingSystemVersion) -> bool;
152
153        #[cfg(feature = "NSDate")]
154        #[unsafe(method(systemUptime))]
155        #[unsafe(method_family = none)]
156        pub fn systemUptime(&self) -> NSTimeInterval;
157
158        #[unsafe(method(disableSuddenTermination))]
159        #[unsafe(method_family = none)]
160        pub fn disableSuddenTermination(&self);
161
162        #[unsafe(method(enableSuddenTermination))]
163        #[unsafe(method_family = none)]
164        pub fn enableSuddenTermination(&self);
165
166        #[cfg(feature = "NSString")]
167        #[unsafe(method(disableAutomaticTermination:))]
168        #[unsafe(method_family = none)]
169        pub fn disableAutomaticTermination(&self, reason: &NSString);
170
171        #[cfg(feature = "NSString")]
172        #[unsafe(method(enableAutomaticTermination:))]
173        #[unsafe(method_family = none)]
174        pub fn enableAutomaticTermination(&self, reason: &NSString);
175
176        #[unsafe(method(automaticTerminationSupportEnabled))]
177        #[unsafe(method_family = none)]
178        pub fn automaticTerminationSupportEnabled(&self) -> bool;
179
180        /// Setter for [`automaticTerminationSupportEnabled`][Self::automaticTerminationSupportEnabled].
181        #[unsafe(method(setAutomaticTerminationSupportEnabled:))]
182        #[unsafe(method_family = none)]
183        pub fn setAutomaticTerminationSupportEnabled(
184            &self,
185            automatic_termination_support_enabled: bool,
186        );
187    );
188}
189
190/// Methods declared on superclass `NSObject`.
191impl NSProcessInfo {
192    extern_methods!(
193        #[unsafe(method(init))]
194        #[unsafe(method_family = init)]
195        pub fn init(this: Allocated<Self>) -> Retained<Self>;
196
197        #[unsafe(method(new))]
198        #[unsafe(method_family = new)]
199        pub fn new() -> Retained<Self>;
200    );
201}
202
203impl DefaultRetained for NSProcessInfo {
204    #[inline]
205    fn default_retained() -> Retained<Self> {
206        Self::new()
207    }
208}
209
210/// [Apple's documentation](https://developer.apple.com/documentation/foundation/nsactivityoptions?language=objc)
211// NS_OPTIONS
212#[repr(transparent)]
213#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
214pub struct NSActivityOptions(pub u64);
215bitflags::bitflags! {
216    impl NSActivityOptions: u64 {
217        #[doc(alias = "NSActivityIdleDisplaySleepDisabled")]
218        const IdleDisplaySleepDisabled = 1<<40;
219        #[doc(alias = "NSActivityIdleSystemSleepDisabled")]
220        const IdleSystemSleepDisabled = 1<<20;
221        #[doc(alias = "NSActivitySuddenTerminationDisabled")]
222        const SuddenTerminationDisabled = 1<<14;
223        #[doc(alias = "NSActivityAutomaticTerminationDisabled")]
224        const AutomaticTerminationDisabled = 1<<15;
225        #[doc(alias = "NSActivityAnimationTrackingEnabled")]
226        const AnimationTrackingEnabled = 1<<45;
227        #[doc(alias = "NSActivityTrackingEnabled")]
228        const TrackingEnabled = 1<<46;
229        #[doc(alias = "NSActivityUserInitiated")]
230        const UserInitiated = 0x00FFFFFF|NSActivityOptions::IdleSystemSleepDisabled.0;
231        #[doc(alias = "NSActivityUserInitiatedAllowingIdleSystemSleep")]
232        const UserInitiatedAllowingIdleSystemSleep = NSActivityOptions::UserInitiated.0&!NSActivityOptions::IdleSystemSleepDisabled.0;
233        #[doc(alias = "NSActivityBackground")]
234        const Background = 0x000000FF;
235        #[doc(alias = "NSActivityLatencyCritical")]
236        const LatencyCritical = 0xFF00000000;
237        #[doc(alias = "NSActivityUserInteractive")]
238        const UserInteractive = NSActivityOptions::UserInitiated.0|NSActivityOptions::LatencyCritical.0;
239    }
240}
241
242unsafe impl Encode for NSActivityOptions {
243    const ENCODING: Encoding = u64::ENCODING;
244}
245
246unsafe impl RefEncode for NSActivityOptions {
247    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
248}
249
250/// NSProcessInfoActivity.
251impl NSProcessInfo {
252    extern_methods!(
253        #[cfg(feature = "NSString")]
254        #[unsafe(method(beginActivityWithOptions:reason:))]
255        #[unsafe(method_family = none)]
256        pub fn beginActivityWithOptions_reason(
257            &self,
258            options: NSActivityOptions,
259            reason: &NSString,
260        ) -> Retained<ProtocolObject<dyn NSObjectProtocol>>;
261
262        /// # Safety
263        ///
264        /// `activity` should be of the correct type.
265        #[unsafe(method(endActivity:))]
266        #[unsafe(method_family = none)]
267        pub unsafe fn endActivity(&self, activity: &ProtocolObject<dyn NSObjectProtocol>);
268
269        #[cfg(all(feature = "NSString", feature = "block2"))]
270        #[unsafe(method(performActivityWithOptions:reason:usingBlock:))]
271        #[unsafe(method_family = none)]
272        pub fn performActivityWithOptions_reason_usingBlock(
273            &self,
274            options: NSActivityOptions,
275            reason: &NSString,
276            block: &block2::DynBlock<dyn Fn()>,
277        );
278
279        #[cfg(all(feature = "NSString", feature = "block2"))]
280        /// # Safety
281        ///
282        /// `block` block must be sendable.
283        #[unsafe(method(performExpiringActivityWithReason:usingBlock:))]
284        #[unsafe(method_family = none)]
285        pub unsafe fn performExpiringActivityWithReason_usingBlock(
286            &self,
287            reason: &NSString,
288            block: &block2::DynBlock<dyn Fn(Bool)>,
289        );
290    );
291}
292
293/// NSUserInformation.
294impl NSProcessInfo {
295    extern_methods!(
296        #[cfg(feature = "NSString")]
297        #[unsafe(method(userName))]
298        #[unsafe(method_family = none)]
299        pub fn userName(&self) -> Retained<NSString>;
300
301        #[cfg(feature = "NSString")]
302        #[unsafe(method(fullUserName))]
303        #[unsafe(method_family = none)]
304        pub fn fullUserName(&self) -> Retained<NSString>;
305    );
306}
307
308/// [Apple's documentation](https://developer.apple.com/documentation/foundation/nsprocessinfothermalstate?language=objc)
309// NS_ENUM
310#[repr(transparent)]
311#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
312pub struct NSProcessInfoThermalState(pub NSInteger);
313impl NSProcessInfoThermalState {
314    #[doc(alias = "NSProcessInfoThermalStateNominal")]
315    pub const Nominal: Self = Self(0);
316    #[doc(alias = "NSProcessInfoThermalStateFair")]
317    pub const Fair: Self = Self(1);
318    #[doc(alias = "NSProcessInfoThermalStateSerious")]
319    pub const Serious: Self = Self(2);
320    #[doc(alias = "NSProcessInfoThermalStateCritical")]
321    pub const Critical: Self = Self(3);
322}
323
324unsafe impl Encode for NSProcessInfoThermalState {
325    const ENCODING: Encoding = NSInteger::ENCODING;
326}
327
328unsafe impl RefEncode for NSProcessInfoThermalState {
329    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
330}
331
332/// NSProcessInfoThermalState.
333impl NSProcessInfo {
334    extern_methods!(
335        #[unsafe(method(thermalState))]
336        #[unsafe(method_family = none)]
337        pub fn thermalState(&self) -> NSProcessInfoThermalState;
338    );
339}
340
341/// NSProcessInfoPowerState.
342impl NSProcessInfo {
343    extern_methods!(
344        #[unsafe(method(isLowPowerModeEnabled))]
345        #[unsafe(method_family = none)]
346        pub fn isLowPowerModeEnabled(&self) -> bool;
347    );
348}
349
350extern "C" {
351    /// [Apple's documentation](https://developer.apple.com/documentation/foundation/nsprocessinfothermalstatedidchangenotification?language=objc)
352    #[cfg(all(feature = "NSNotification", feature = "NSString"))]
353    pub static NSProcessInfoThermalStateDidChangeNotification: &'static NSNotificationName;
354}
355
356extern "C" {
357    /// [Apple's documentation](https://developer.apple.com/documentation/foundation/nsprocessinfopowerstatedidchangenotification?language=objc)
358    #[cfg(all(feature = "NSNotification", feature = "NSString"))]
359    pub static NSProcessInfoPowerStateDidChangeNotification: &'static NSNotificationName;
360}
361
362/// NSProcessInfoPlatform.
363impl NSProcessInfo {
364    extern_methods!(
365        #[unsafe(method(isMacCatalystApp))]
366        #[unsafe(method_family = none)]
367        pub fn isMacCatalystApp(&self) -> bool;
368
369        #[unsafe(method(isiOSAppOnMac))]
370        #[unsafe(method_family = none)]
371        pub fn isiOSAppOnMac(&self) -> bool;
372    );
373}