use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
extern_protocol!(
pub unsafe trait CMWaterSubmersionManagerDelegate: NSObjectProtocol {
#[cfg(feature = "CMWaterSubmersionData")]
#[unsafe(method(manager:didUpdateEvent:))]
#[unsafe(method_family = none)]
unsafe fn manager_didUpdateEvent(
&self,
manager: &CMWaterSubmersionManager,
event: &CMWaterSubmersionEvent,
);
#[cfg(feature = "CMWaterSubmersionData")]
#[unsafe(method(manager:didUpdateMeasurement:))]
#[unsafe(method_family = none)]
unsafe fn manager_didUpdateMeasurement(
&self,
manager: &CMWaterSubmersionManager,
measurement: &CMWaterSubmersionMeasurement,
);
#[cfg(feature = "CMWaterSubmersionData")]
#[unsafe(method(manager:didUpdateTemperature:))]
#[unsafe(method_family = none)]
unsafe fn manager_didUpdateTemperature(
&self,
manager: &CMWaterSubmersionManager,
measurement: &CMWaterTemperature,
);
#[unsafe(method(manager:errorOccurred:))]
#[unsafe(method_family = none)]
unsafe fn manager_errorOccurred(&self, manager: &CMWaterSubmersionManager, error: &NSError);
}
);
extern_class!(
#[unsafe(super(NSObject))]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct CMWaterSubmersionManager;
);
extern_conformance!(
unsafe impl NSObjectProtocol for CMWaterSubmersionManager {}
);
impl CMWaterSubmersionManager {
extern_methods!(
#[unsafe(method(delegate))]
#[unsafe(method_family = none)]
pub unsafe fn delegate(
&self,
) -> Option<Retained<ProtocolObject<dyn CMWaterSubmersionManagerDelegate>>>;
#[unsafe(method(setDelegate:))]
#[unsafe(method_family = none)]
pub unsafe fn setDelegate(
&self,
delegate: Option<&ProtocolObject<dyn CMWaterSubmersionManagerDelegate>>,
);
#[unsafe(method(waterSubmersionAvailable))]
#[unsafe(method_family = none)]
pub unsafe fn waterSubmersionAvailable() -> bool;
#[cfg(feature = "CMAuthorization")]
#[unsafe(method(authorizationStatus))]
#[unsafe(method_family = none)]
pub unsafe fn authorizationStatus() -> CMAuthorizationStatus;
#[unsafe(method(maximumDepth))]
#[unsafe(method_family = none)]
pub unsafe fn maximumDepth(&self) -> Option<Retained<NSMeasurement<NSUnitLength>>>;
);
}
impl CMWaterSubmersionManager {
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>;
);
}