objc2-health-kit 0.3.2

Bindings to the HealthKit 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::*;

/// Represents the prism base for rectangular coordinates
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/healthkit/hkprismbase?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct HKPrismBase(pub NSInteger);
impl HKPrismBase {
    #[doc(alias = "HKPrismBaseNone")]
    pub const None: Self = Self(0);
    #[doc(alias = "HKPrismBaseUp")]
    pub const Up: Self = Self(1);
    #[doc(alias = "HKPrismBaseDown")]
    pub const Down: Self = Self(2);
    #[doc(alias = "HKPrismBaseIn")]
    pub const In: Self = Self(3);
    #[doc(alias = "HKPrismBaseOut")]
    pub const Out: Self = Self(4);
}

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

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

/// Represents an eye
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/healthkit/hkvisioneye?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct HKVisionEye(pub NSInteger);
impl HKVisionEye {
    #[doc(alias = "HKVisionEyeLeft")]
    pub const Left: Self = Self(1);
    #[doc(alias = "HKVisionEyeRight")]
    pub const Right: Self = Self(2);
}

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

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

extern_class!(
    /// An object subclass representing prism vision fields used in eye glasses to correct double vision.
    /// The prism aligns the two images so only one is seen.
    ///
    /// See also [Apple's documentation](https://developer.apple.com/documentation/healthkit/hkvisionprism?language=objc)
    #[unsafe(super(NSObject))]
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct HKVisionPrism;
);

unsafe impl Send for HKVisionPrism {}

unsafe impl Sync for HKVisionPrism {}

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

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

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

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

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

impl HKVisionPrism {
    extern_methods!(
        #[cfg(feature = "HKQuantity")]
        /// The compensation in prism diopters to correct eye misalignment [polar coordinates]
        ///
        /// This property is not atomic.
        ///
        /// # Safety
        ///
        /// This might not be thread-safe.
        #[unsafe(method(amount))]
        #[unsafe(method_family = none)]
        pub unsafe fn amount(&self) -> Retained<HKQuantity>;

        #[cfg(feature = "HKQuantity")]
        /// The direction of the prism base [polar coordinates]
        ///
        /// This property is not atomic.
        ///
        /// # Safety
        ///
        /// This might not be thread-safe.
        #[unsafe(method(angle))]
        #[unsafe(method_family = none)]
        pub unsafe fn angle(&self) -> Retained<HKQuantity>;

        #[cfg(feature = "HKQuantity")]
        /// The vertical component of compensation in prism diopters [rectangular coordinates]
        ///
        /// This property is not atomic.
        ///
        /// # Safety
        ///
        /// This might not be thread-safe.
        #[unsafe(method(verticalAmount))]
        #[unsafe(method_family = none)]
        pub unsafe fn verticalAmount(&self) -> Retained<HKQuantity>;

        #[cfg(feature = "HKQuantity")]
        /// The horizontal component of compensation in prism diopters [rectangular coordinates]
        ///
        /// This property is not atomic.
        ///
        /// # Safety
        ///
        /// This might not be thread-safe.
        #[unsafe(method(horizontalAmount))]
        #[unsafe(method_family = none)]
        pub unsafe fn horizontalAmount(&self) -> Retained<HKQuantity>;

        /// The direction of the prism base relative to the vertical axis of the lens;
        /// base up or base down. [rectangular coordinates]
        ///
        /// This property is not atomic.
        ///
        /// # Safety
        ///
        /// This might not be thread-safe.
        #[unsafe(method(verticalBase))]
        #[unsafe(method_family = none)]
        pub unsafe fn verticalBase(&self) -> HKPrismBase;

        /// The direction of the prism base relative to the horizontal axis of the lens;
        /// base in (toward the nose) or base out (away from the nose). [rectangular coordinates]
        ///
        /// This property is not atomic.
        ///
        /// # Safety
        ///
        /// This might not be thread-safe.
        #[unsafe(method(horizontalBase))]
        #[unsafe(method_family = none)]
        pub unsafe fn horizontalBase(&self) -> HKPrismBase;

        /// Which eye (left or right)
        ///
        /// This property is not atomic.
        ///
        /// # Safety
        ///
        /// This might not be thread-safe.
        #[unsafe(method(eye))]
        #[unsafe(method_family = none)]
        pub unsafe fn eye(&self) -> HKVisionEye;

        #[cfg(feature = "HKQuantity")]
        /// Parameter `amount`: The compensation for amount eye misalignment
        ///
        /// Parameter `angle`: The angle of the lens required to correct diplopia
        ///
        /// Parameter `eye`: The eye associated with the prism values
        #[unsafe(method(initWithAmount:angle:eye:))]
        #[unsafe(method_family = init)]
        pub unsafe fn initWithAmount_angle_eye(
            this: Allocated<Self>,
            amount: &HKQuantity,
            angle: &HKQuantity,
            eye: HKVisionEye,
        ) -> Retained<Self>;

        #[cfg(feature = "HKQuantity")]
        /// Parameter `verticalAmount`: The vertical component of compensation in prism diopters
        ///
        /// Parameter `verticalBase`: The direction of the prism base relative to the vertical axis of the lens;
        /// base up or base down.
        ///
        /// Parameter `horizontalAmount`: The horizontal component of compensation in prism diopters
        ///
        /// Parameter `horizontalBase`: The direction of the prism base relative to the horizontal axis of the lens;
        /// base in (toward the nose) or base out (away from the nose).
        ///
        /// Parameter `eye`: The eye associated with the prism values
        #[unsafe(method(initWithVerticalAmount:verticalBase:horizontalAmount:horizontalBase:eye:))]
        #[unsafe(method_family = init)]
        pub unsafe fn initWithVerticalAmount_verticalBase_horizontalAmount_horizontalBase_eye(
            this: Allocated<Self>,
            vertical_amount: &HKQuantity,
            vertical_base: HKPrismBase,
            horizontal_amount: &HKQuantity,
            horizontal_base: HKPrismBase,
            eye: HKVisionEye,
        ) -> Retained<Self>;

        #[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>;
    );
}