use crate::common::*;
use crate::Foundation::*;
extern_enum!(
#[underlying(c_uint)]
pub enum {
NSWindowsNTOperatingSystem = 1,
NSWindows95OperatingSystem = 2,
NSSolarisOperatingSystem = 3,
NSHPUXOperatingSystem = 4,
NSMACHOperatingSystem = 5,
NSSunOSOperatingSystem = 6,
NSOSF1OperatingSystem = 7,
}
);
extern_struct!(
pub struct NSOperatingSystemVersion {
pub majorVersion: NSInteger,
pub minorVersion: NSInteger,
pub patchVersion: NSInteger,
}
);
extern_class!(
#[derive(PartialEq, Eq, Hash)]
pub struct NSProcessInfo;
unsafe impl ClassType for NSProcessInfo {
type Super = NSObject;
}
);
extern_methods!(
unsafe impl NSProcessInfo {
#[method_id(@__retain_semantics Other processInfo)]
pub fn processInfo() -> Id<NSProcessInfo, Shared>;
#[method_id(@__retain_semantics Other environment)]
pub unsafe fn environment(&self) -> Id<NSDictionary<NSString, NSString>, Shared>;
#[method_id(@__retain_semantics Other arguments)]
pub unsafe fn arguments(&self) -> Id<NSArray<NSString>, Shared>;
#[method_id(@__retain_semantics Other hostName)]
pub unsafe fn hostName(&self) -> Id<NSString, Shared>;
#[method_id(@__retain_semantics Other processName)]
pub fn processName(&self) -> Id<NSString, Shared>;
#[method(setProcessName:)]
pub unsafe fn setProcessName(&self, processName: &NSString);
#[method(processIdentifier)]
pub unsafe fn processIdentifier(&self) -> c_int;
#[method_id(@__retain_semantics Other globallyUniqueString)]
pub unsafe fn globallyUniqueString(&self) -> Id<NSString, Shared>;
#[method(operatingSystem)]
pub unsafe fn operatingSystem(&self) -> NSUInteger;
#[method_id(@__retain_semantics Other operatingSystemName)]
pub unsafe fn operatingSystemName(&self) -> Id<NSString, Shared>;
#[method_id(@__retain_semantics Other operatingSystemVersionString)]
pub unsafe fn operatingSystemVersionString(&self) -> Id<NSString, Shared>;
#[method(operatingSystemVersion)]
pub unsafe fn operatingSystemVersion(&self) -> NSOperatingSystemVersion;
#[method(processorCount)]
pub unsafe fn processorCount(&self) -> NSUInteger;
#[method(activeProcessorCount)]
pub unsafe fn activeProcessorCount(&self) -> NSUInteger;
#[method(physicalMemory)]
pub unsafe fn physicalMemory(&self) -> c_ulonglong;
#[method(isOperatingSystemAtLeastVersion:)]
pub unsafe fn isOperatingSystemAtLeastVersion(
&self,
version: NSOperatingSystemVersion,
) -> bool;
#[method(systemUptime)]
pub unsafe fn systemUptime(&self) -> NSTimeInterval;
#[method(disableSuddenTermination)]
pub unsafe fn disableSuddenTermination(&self);
#[method(enableSuddenTermination)]
pub unsafe fn enableSuddenTermination(&self);
#[method(disableAutomaticTermination:)]
pub unsafe fn disableAutomaticTermination(&self, reason: &NSString);
#[method(enableAutomaticTermination:)]
pub unsafe fn enableAutomaticTermination(&self, reason: &NSString);
#[method(automaticTerminationSupportEnabled)]
pub unsafe fn automaticTerminationSupportEnabled(&self) -> bool;
#[method(setAutomaticTerminationSupportEnabled:)]
pub unsafe fn setAutomaticTerminationSupportEnabled(
&self,
automaticTerminationSupportEnabled: bool,
);
}
);
ns_options!(
#[underlying(u64)]
pub enum NSActivityOptions {
NSActivityIdleDisplaySleepDisabled = 1 << 40,
NSActivityIdleSystemSleepDisabled = 1 << 20,
NSActivitySuddenTerminationDisabled = 1 << 14,
NSActivityAutomaticTerminationDisabled = 1 << 15,
NSActivityUserInitiated = 0x00FFFFFF | NSActivityIdleSystemSleepDisabled,
NSActivityUserInitiatedAllowingIdleSystemSleep =
NSActivityUserInitiated & !NSActivityIdleSystemSleepDisabled,
NSActivityBackground = 0x000000FF,
NSActivityLatencyCritical = 0xFF00000000,
}
);
extern_methods!(
unsafe impl NSProcessInfo {
#[method_id(@__retain_semantics Other beginActivityWithOptions:reason:)]
pub unsafe fn beginActivityWithOptions_reason(
&self,
options: NSActivityOptions,
reason: &NSString,
) -> Id<NSObject, Shared>;
#[method(endActivity:)]
pub unsafe fn endActivity(&self, activity: &NSObject);
#[method(performActivityWithOptions:reason:usingBlock:)]
pub unsafe fn performActivityWithOptions_reason_usingBlock(
&self,
options: NSActivityOptions,
reason: &NSString,
block: &Block<(), ()>,
);
#[method(performExpiringActivityWithReason:usingBlock:)]
pub unsafe fn performExpiringActivityWithReason_usingBlock(
&self,
reason: &NSString,
block: &Block<(Bool,), ()>,
);
}
);
extern_methods!(
unsafe impl NSProcessInfo {
#[method_id(@__retain_semantics Other userName)]
pub unsafe fn userName(&self) -> Id<NSString, Shared>;
#[method_id(@__retain_semantics Other fullUserName)]
pub unsafe fn fullUserName(&self) -> Id<NSString, Shared>;
}
);
ns_enum!(
#[underlying(NSInteger)]
pub enum NSProcessInfoThermalState {
NSProcessInfoThermalStateNominal = 0,
NSProcessInfoThermalStateFair = 1,
NSProcessInfoThermalStateSerious = 2,
NSProcessInfoThermalStateCritical = 3,
}
);
extern_methods!(
unsafe impl NSProcessInfo {
#[method(thermalState)]
pub unsafe fn thermalState(&self) -> NSProcessInfoThermalState;
}
);
extern_methods!(
unsafe impl NSProcessInfo {
#[method(isLowPowerModeEnabled)]
pub unsafe fn isLowPowerModeEnabled(&self) -> bool;
}
);
extern_static!(NSProcessInfoThermalStateDidChangeNotification: &'static NSNotificationName);
extern_static!(NSProcessInfoPowerStateDidChangeNotification: &'static NSNotificationName);
extern_methods!(
unsafe impl NSProcessInfo {
#[method(isMacCatalystApp)]
pub unsafe fn isMacCatalystApp(&self) -> bool;
#[method(isiOSAppOnMac)]
pub unsafe fn isiOSAppOnMac(&self) -> bool;
}
);