objc2-core-motion 0.3.2

Bindings to the CoreMotion framework
Documentation
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;

use crate::*;

/// [Apple's documentation](https://developer.apple.com/documentation/coremotion/cmwatersubmersionstate?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct CMWaterSubmersionState(pub NSInteger);
impl CMWaterSubmersionState {
    #[doc(alias = "CMWaterSubmersionStateUnknown")]
    pub const Unknown: Self = Self(0);
    #[doc(alias = "CMWaterSubmersionStateNotSubmerged")]
    pub const NotSubmerged: Self = Self(1);
    #[doc(alias = "CMWaterSubmersionStateSubmerged")]
    pub const Submerged: Self = Self(2);
}

unsafe impl Encode for CMWaterSubmersionState {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for CMWaterSubmersionState {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

/// [Apple's documentation](https://developer.apple.com/documentation/coremotion/cmwatersubmersiondepthstate?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct CMWaterSubmersionDepthState(pub NSInteger);
impl CMWaterSubmersionDepthState {
    #[doc(alias = "CMWaterSubmersionDepthStateUnknown")]
    pub const Unknown: Self = Self(0);
    #[doc(alias = "CMWaterSubmersionDepthStateNotSubmerged")]
    pub const NotSubmerged: Self = Self(100);
    #[doc(alias = "CMWaterSubmersionDepthStateSubmergedShallow")]
    pub const SubmergedShallow: Self = Self(200);
    #[doc(alias = "CMWaterSubmersionDepthStateSubmergedDeep")]
    pub const SubmergedDeep: Self = Self(300);
    #[doc(alias = "CMWaterSubmersionDepthStateApproachingMaxDepth")]
    pub const ApproachingMaxDepth: Self = Self(400);
    #[doc(alias = "CMWaterSubmersionDepthStatePastMaxDepth")]
    pub const PastMaxDepth: Self = Self(500);
    #[doc(alias = "CMWaterSubmersionDepthStateSensorDepthError")]
    pub const SensorDepthError: Self = Self(600);
}

unsafe impl Encode for CMWaterSubmersionDepthState {
    const ENCODING: Encoding = NSInteger::ENCODING;
}

unsafe impl RefEncode for CMWaterSubmersionDepthState {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

extern_class!(
    /// [Apple's documentation](https://developer.apple.com/documentation/coremotion/cmwatersubmersionevent?language=objc)
    #[unsafe(super(NSObject))]
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct CMWaterSubmersionEvent;
);

extern_conformance!(
    unsafe impl NSCoding for CMWaterSubmersionEvent {}
);

extern_conformance!(
    unsafe impl NSCopying for CMWaterSubmersionEvent {}
);

unsafe impl CopyingHelper for CMWaterSubmersionEvent {
    type Result = Self;
}

extern_conformance!(
    unsafe impl NSObjectProtocol for CMWaterSubmersionEvent {}
);

extern_conformance!(
    unsafe impl NSSecureCoding for CMWaterSubmersionEvent {}
);

impl CMWaterSubmersionEvent {
    extern_methods!(
        #[unsafe(method(date))]
        #[unsafe(method_family = none)]
        pub unsafe fn date(&self) -> Retained<NSDate>;

        #[unsafe(method(state))]
        #[unsafe(method_family = none)]
        pub unsafe fn state(&self) -> CMWaterSubmersionState;
    );
}

/// Methods declared on superclass `NSObject`.
impl CMWaterSubmersionEvent {
    extern_methods!(
        #[unsafe(method(init))]
        #[unsafe(method_family = init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;

        #[unsafe(method(new))]
        #[unsafe(method_family = new)]
        pub unsafe fn new() -> Retained<Self>;
    );
}

extern_class!(
    /// [Apple's documentation](https://developer.apple.com/documentation/coremotion/cmwatersubmersionmeasurement?language=objc)
    #[unsafe(super(NSObject))]
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct CMWaterSubmersionMeasurement;
);

extern_conformance!(
    unsafe impl NSCoding for CMWaterSubmersionMeasurement {}
);

extern_conformance!(
    unsafe impl NSCopying for CMWaterSubmersionMeasurement {}
);

unsafe impl CopyingHelper for CMWaterSubmersionMeasurement {
    type Result = Self;
}

extern_conformance!(
    unsafe impl NSObjectProtocol for CMWaterSubmersionMeasurement {}
);

extern_conformance!(
    unsafe impl NSSecureCoding for CMWaterSubmersionMeasurement {}
);

impl CMWaterSubmersionMeasurement {
    extern_methods!(
        #[unsafe(method(date))]
        #[unsafe(method_family = none)]
        pub unsafe fn date(&self) -> Retained<NSDate>;

        #[unsafe(method(depth))]
        #[unsafe(method_family = none)]
        pub unsafe fn depth(&self) -> Option<Retained<NSMeasurement<NSUnitLength>>>;

        #[unsafe(method(pressure))]
        #[unsafe(method_family = none)]
        pub unsafe fn pressure(&self) -> Option<Retained<NSMeasurement<NSUnitPressure>>>;

        #[unsafe(method(surfacePressure))]
        #[unsafe(method_family = none)]
        pub unsafe fn surfacePressure(&self) -> Retained<NSMeasurement<NSUnitPressure>>;

        #[unsafe(method(submersionState))]
        #[unsafe(method_family = none)]
        pub unsafe fn submersionState(&self) -> CMWaterSubmersionDepthState;
    );
}

/// Methods declared on superclass `NSObject`.
impl CMWaterSubmersionMeasurement {
    extern_methods!(
        #[unsafe(method(init))]
        #[unsafe(method_family = init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;

        #[unsafe(method(new))]
        #[unsafe(method_family = new)]
        pub unsafe fn new() -> Retained<Self>;
    );
}

extern_class!(
    /// [Apple's documentation](https://developer.apple.com/documentation/coremotion/cmwatertemperature?language=objc)
    #[unsafe(super(NSObject))]
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct CMWaterTemperature;
);

extern_conformance!(
    unsafe impl NSCoding for CMWaterTemperature {}
);

extern_conformance!(
    unsafe impl NSCopying for CMWaterTemperature {}
);

unsafe impl CopyingHelper for CMWaterTemperature {
    type Result = Self;
}

extern_conformance!(
    unsafe impl NSObjectProtocol for CMWaterTemperature {}
);

extern_conformance!(
    unsafe impl NSSecureCoding for CMWaterTemperature {}
);

impl CMWaterTemperature {
    extern_methods!(
        #[unsafe(method(date))]
        #[unsafe(method_family = none)]
        pub unsafe fn date(&self) -> Retained<NSDate>;

        #[unsafe(method(temperature))]
        #[unsafe(method_family = none)]
        pub unsafe fn temperature(&self) -> Retained<NSMeasurement<NSUnitTemperature>>;

        #[unsafe(method(temperatureUncertainty))]
        #[unsafe(method_family = none)]
        pub unsafe fn temperatureUncertainty(&self) -> Retained<NSMeasurement<NSUnitTemperature>>;
    );
}

/// Methods declared on superclass `NSObject`.
impl CMWaterTemperature {
    extern_methods!(
        #[unsafe(method(init))]
        #[unsafe(method_family = init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;

        #[unsafe(method(new))]
        #[unsafe(method_family = new)]
        pub unsafe fn new() -> Retained<Self>;
    );
}