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::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;

use crate::*;

extern_class!(
    /// [Apple's documentation](https://developer.apple.com/documentation/healthkit/hkquantityseriessamplequery?language=objc)
    #[unsafe(super(HKQuery, NSObject))]
    #[derive(Debug, PartialEq, Eq, Hash)]
    #[cfg(feature = "HKQuery")]
    pub struct HKQuantitySeriesSampleQuery;
);

#[cfg(feature = "HKQuery")]
unsafe impl Send for HKQuantitySeriesSampleQuery {}

#[cfg(feature = "HKQuery")]
unsafe impl Sync for HKQuantitySeriesSampleQuery {}

#[cfg(feature = "HKQuery")]
extern_conformance!(
    unsafe impl NSObjectProtocol for HKQuantitySeriesSampleQuery {}
);

#[cfg(feature = "HKQuery")]
impl HKQuantitySeriesSampleQuery {
    extern_methods!(
        /// Include owning HKQuantitySample in quantityHandler handler.
        ///
        /// Default value is NO.
        /// If includeSample is set then the quantitySample parameter of quantityHandler will
        /// be non-nil anytime the quantity parameter is non-nil.
        /// Specifying this option has a performance cost.
        /// This property may not be modified once the query has been executed.
        ///
        /// This property is not atomic.
        ///
        /// # Safety
        ///
        /// This might not be thread-safe.
        #[unsafe(method(includeSample))]
        #[unsafe(method_family = none)]
        pub unsafe fn includeSample(&self) -> bool;

        /// Setter for [`includeSample`][Self::includeSample].
        ///
        /// # Safety
        ///
        /// This might not be thread-safe.
        #[unsafe(method(setIncludeSample:))]
        #[unsafe(method_family = none)]
        pub unsafe fn setIncludeSample(&self, include_sample: bool);

        /// Order enumerated results first by quantitySample.startDate,
        /// then by the quantity's dateInterval.startDate.
        ///
        /// Default value is NO.
        /// All quantities owned by a given quantitySample will be
        /// enumerated before any quantities owned by any other quantity sample,
        /// and the quantity samples will be enumerated in their startDate order.
        /// Note that individual quantities may not be returned in their
        /// dateInterval.startDate order if more than one quantitySample overlap in time.
        /// This property may not be modified once the query has been executed.
        ///
        /// This property is not atomic.
        ///
        /// # Safety
        ///
        /// This might not be thread-safe.
        #[unsafe(method(orderByQuantitySampleStartDate))]
        #[unsafe(method_family = none)]
        pub unsafe fn orderByQuantitySampleStartDate(&self) -> bool;

        /// Setter for [`orderByQuantitySampleStartDate`][Self::orderByQuantitySampleStartDate].
        ///
        /// # Safety
        ///
        /// This might not be thread-safe.
        #[unsafe(method(setOrderByQuantitySampleStartDate:))]
        #[unsafe(method_family = none)]
        pub unsafe fn setOrderByQuantitySampleStartDate(
            &self,
            order_by_quantity_sample_start_date: bool,
        );

        #[cfg(all(
            feature = "HKObject",
            feature = "HKObjectType",
            feature = "HKQuantity",
            feature = "HKQuantitySample",
            feature = "HKSample",
            feature = "block2"
        ))]
        /// Returns a query that will retrieve HKQuantity objects for samples of a specified
        /// type that match the specified predicate.
        ///
        ///
        /// Parameter `quantityType`: The type of HKQuantitySample to retrieve.
        ///
        /// Parameter `predicate`: The predicate which the query results should match.
        /// To query for the quantities for a specific quantity sample
        /// see: +[HKPredicates predicateForObjectWithUUID:]
        ///
        ///
        /// Parameter `quantityHandler`: The block to invoke with results from the query. It will be
        /// called repeatedly with HKQuantity, and NSDateInterval objects in
        /// ascending dateInterval.startDate order, until all quantities are
        /// returned and the done parameter is YES
        /// or -[HKHealthStore stopQuery:] is called.
        /// The quantitySample parameter is nil unless includeSample is YES,
        /// in which case it will be the quantitySample which owns the current
        /// quantity anytime the quantity paramater is non-nil.
        /// The stopQuery call can be made within the quantityHandler block.
        /// Once done is YES, or stopQuery has been called, the query is
        /// complete and no more calls to quantityHandler will be made.
        ///
        /// # Safety
        ///
        /// `quantity_handler` block must be sendable.
        #[unsafe(method(initWithQuantityType:predicate:quantityHandler:))]
        #[unsafe(method_family = init)]
        pub unsafe fn initWithQuantityType_predicate_quantityHandler(
            this: Allocated<Self>,
            quantity_type: &HKQuantityType,
            predicate: Option<&NSPredicate>,
            quantity_handler: &block2::DynBlock<
                dyn Fn(
                    NonNull<HKQuantitySeriesSampleQuery>,
                    *mut HKQuantity,
                    *mut NSDateInterval,
                    *mut HKQuantitySample,
                    Bool,
                    *mut NSError,
                ),
            >,
        ) -> Retained<Self>;

        #[cfg(all(
            feature = "HKObject",
            feature = "HKQuantity",
            feature = "HKQuantitySample",
            feature = "HKSample",
            feature = "block2"
        ))]
        /// # Safety
        ///
        /// `quantity_handler` block must be sendable.
        #[deprecated]
        #[unsafe(method(initWithSample:quantityHandler:))]
        #[unsafe(method_family = init)]
        pub unsafe fn initWithSample_quantityHandler(
            this: Allocated<Self>,
            quantity_sample: &HKQuantitySample,
            quantity_handler: &block2::DynBlock<
                dyn Fn(
                    NonNull<HKQuantitySeriesSampleQuery>,
                    *mut HKQuantity,
                    *mut NSDate,
                    Bool,
                    *mut NSError,
                ),
            >,
        ) -> Retained<Self>;
    );
}

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

/// Methods declared on superclass `NSObject`.
#[cfg(feature = "HKQuery")]
impl HKQuantitySeriesSampleQuery {
    extern_methods!(
        #[unsafe(method(new))]
        #[unsafe(method_family = new)]
        pub unsafe fn new() -> Retained<Self>;
    );
}