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::*;

/// This enumerated type is used to represent the classification for the user's walking steadiness.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/healthkit/hkapplewalkingsteadinessclassification?language=objc)
// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct HKAppleWalkingSteadinessClassification(pub NSInteger);
impl HKAppleWalkingSteadinessClassification {
    #[doc(alias = "HKAppleWalkingSteadinessClassificationOK")]
    pub const OK: Self = Self(1);
    #[doc(alias = "HKAppleWalkingSteadinessClassificationLow")]
    pub const Low: Self = Self(2);
    #[doc(alias = "HKAppleWalkingSteadinessClassificationVeryLow")]
    pub const VeryLow: Self = Self(3);
}

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

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

impl HKAppleWalkingSteadinessClassification {
    /// Determines the Apple Walking Steadiness classification for the provided Apple Walking Steadiness value.
    ///
    /// Parameter `value`: Apple Walking Steadiness quantity with expected value between 0% and 100%.
    ///
    /// Parameter `classificationOut`: A pointer to the classification determined for the provided value.
    ///
    /// Parameter `errorOut`: A pointer to an error describing why an unknown classification was returned.
    ///
    /// Returns: YES if the classification was successful. NO otherwise, meaning the provided value could not be classified.
    ///
    /// # Safety
    ///
    /// - `classification_out` must be a valid pointer.
    /// - `error_out` must be a valid pointer or null.
    #[doc(alias = "HKAppleWalkingSteadinessClassificationForQuantity")]
    #[cfg(feature = "HKQuantity")]
    #[inline]
    pub unsafe fn for_quantity(
        value: &HKQuantity,
        classification_out: NonNull<HKAppleWalkingSteadinessClassification>,
        error_out: *mut *mut NSError,
    ) -> bool {
        extern "C-unwind" {
            fn HKAppleWalkingSteadinessClassificationForQuantity(
                value: &HKQuantity,
                classification_out: NonNull<HKAppleWalkingSteadinessClassification>,
                error_out: *mut *mut NSError,
            ) -> Bool;
        }
        unsafe {
            HKAppleWalkingSteadinessClassificationForQuantity(value, classification_out, error_out)
        }
        .as_bool()
    }
}

/// Retrieves the minimum quantity in percent unit for an Apple Walking Steadiness classification.
///
/// Parameter `classification`: Apple Walking Steadiness classification for desired minimum value.
#[cfg(feature = "HKQuantity")]
#[inline]
pub unsafe extern "C-unwind" fn HKAppleWalkingSteadinessMinimumQuantityForClassification(
    classification: HKAppleWalkingSteadinessClassification,
) -> Retained<HKQuantity> {
    extern "C-unwind" {
        fn HKAppleWalkingSteadinessMinimumQuantityForClassification(
            classification: HKAppleWalkingSteadinessClassification,
        ) -> *mut HKQuantity;
    }
    let ret = unsafe { HKAppleWalkingSteadinessMinimumQuantityForClassification(classification) };
    unsafe { Retained::retain_autoreleased(ret) }
        .expect("function was marked as returning non-null, but actually returned NULL")
}

/// Retrieves the maximum quantity in percent unit for an Apple Walking Steadiness classification.
///
/// Parameter `classification`: Apple Walking Steadiness classification for desired maximum value.
#[cfg(feature = "HKQuantity")]
#[inline]
pub unsafe extern "C-unwind" fn HKAppleWalkingSteadinessMaximumQuantityForClassification(
    classification: HKAppleWalkingSteadinessClassification,
) -> Retained<HKQuantity> {
    extern "C-unwind" {
        fn HKAppleWalkingSteadinessMaximumQuantityForClassification(
            classification: HKAppleWalkingSteadinessClassification,
        ) -> *mut HKQuantity;
    }
    let ret = unsafe { HKAppleWalkingSteadinessMaximumQuantityForClassification(classification) };
    unsafe { Retained::retain_autoreleased(ret) }
        .expect("function was marked as returning non-null, but actually returned NULL")
}

#[cfg(feature = "HKQuantity")]
#[deprecated = "renamed to `HKAppleWalkingSteadinessClassification::for_quantity`"]
#[inline]
pub unsafe extern "C-unwind" fn HKAppleWalkingSteadinessClassificationForQuantity(
    value: &HKQuantity,
    classification_out: NonNull<HKAppleWalkingSteadinessClassification>,
    error_out: *mut *mut NSError,
) -> bool {
    extern "C-unwind" {
        fn HKAppleWalkingSteadinessClassificationForQuantity(
            value: &HKQuantity,
            classification_out: NonNull<HKAppleWalkingSteadinessClassification>,
            error_out: *mut *mut NSError,
        ) -> Bool;
    }
    unsafe {
        HKAppleWalkingSteadinessClassificationForQuantity(value, classification_out, error_out)
    }
    .as_bool()
}