objc2_core_motion/generated/
CMDeviceMotion.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6use objc2_foundation::*;
7
8use crate::*;
9
10/// [Apple's documentation](https://developer.apple.com/documentation/coremotion/cmdevicemotionsensorlocation?language=objc)
11// NS_ENUM
12#[repr(transparent)]
13#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
14pub struct CMDeviceMotionSensorLocation(pub NSInteger);
15impl CMDeviceMotionSensorLocation {
16    #[doc(alias = "CMDeviceMotionSensorLocationDefault")]
17    pub const Default: Self = Self(0);
18    #[doc(alias = "CMDeviceMotionSensorLocationHeadphoneLeft")]
19    pub const HeadphoneLeft: Self = Self(1);
20    #[doc(alias = "CMDeviceMotionSensorLocationHeadphoneRight")]
21    pub const HeadphoneRight: Self = Self(2);
22}
23
24unsafe impl Encode for CMDeviceMotionSensorLocation {
25    const ENCODING: Encoding = NSInteger::ENCODING;
26}
27
28unsafe impl RefEncode for CMDeviceMotionSensorLocation {
29    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
30}
31
32/// [Apple's documentation](https://developer.apple.com/documentation/coremotion/cmmagneticfieldcalibrationaccuracy?language=objc)
33// NS_ENUM
34#[repr(transparent)]
35#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
36pub struct CMMagneticFieldCalibrationAccuracy(pub c_int);
37impl CMMagneticFieldCalibrationAccuracy {
38    #[doc(alias = "CMMagneticFieldCalibrationAccuracyUncalibrated")]
39    pub const Uncalibrated: Self = Self(-1);
40    #[doc(alias = "CMMagneticFieldCalibrationAccuracyLow")]
41    pub const Low: Self = Self(0);
42    #[doc(alias = "CMMagneticFieldCalibrationAccuracyMedium")]
43    pub const Medium: Self = Self(1);
44    #[doc(alias = "CMMagneticFieldCalibrationAccuracyHigh")]
45    pub const High: Self = Self(2);
46}
47
48unsafe impl Encode for CMMagneticFieldCalibrationAccuracy {
49    const ENCODING: Encoding = c_int::ENCODING;
50}
51
52unsafe impl RefEncode for CMMagneticFieldCalibrationAccuracy {
53    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
54}
55
56/// [Apple's documentation](https://developer.apple.com/documentation/coremotion/cmcalibratedmagneticfield?language=objc)
57#[cfg(feature = "CMMagnetometer")]
58#[repr(C)]
59#[derive(Clone, Copy, Debug, PartialEq)]
60pub struct CMCalibratedMagneticField {
61    pub field: CMMagneticField,
62    pub accuracy: CMMagneticFieldCalibrationAccuracy,
63}
64
65#[cfg(feature = "CMMagnetometer")]
66unsafe impl Encode for CMCalibratedMagneticField {
67    const ENCODING: Encoding = Encoding::Struct(
68        "?",
69        &[
70            <CMMagneticField>::ENCODING,
71            <CMMagneticFieldCalibrationAccuracy>::ENCODING,
72        ],
73    );
74}
75
76#[cfg(feature = "CMMagnetometer")]
77unsafe impl RefEncode for CMCalibratedMagneticField {
78    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
79}
80
81extern_class!(
82    /// [Apple's documentation](https://developer.apple.com/documentation/coremotion/cmdevicemotion?language=objc)
83    #[unsafe(super(CMLogItem, NSObject))]
84    #[derive(Debug, PartialEq, Eq, Hash)]
85    #[cfg(feature = "CMLogItem")]
86    pub struct CMDeviceMotion;
87);
88
89#[cfg(feature = "CMLogItem")]
90extern_conformance!(
91    unsafe impl NSCoding for CMDeviceMotion {}
92);
93
94#[cfg(feature = "CMLogItem")]
95extern_conformance!(
96    unsafe impl NSCopying for CMDeviceMotion {}
97);
98
99#[cfg(feature = "CMLogItem")]
100unsafe impl CopyingHelper for CMDeviceMotion {
101    type Result = Self;
102}
103
104#[cfg(feature = "CMLogItem")]
105extern_conformance!(
106    unsafe impl NSObjectProtocol for CMDeviceMotion {}
107);
108
109#[cfg(feature = "CMLogItem")]
110extern_conformance!(
111    unsafe impl NSSecureCoding for CMDeviceMotion {}
112);
113
114#[cfg(feature = "CMLogItem")]
115impl CMDeviceMotion {
116    extern_methods!(
117        #[cfg(feature = "CMAttitude")]
118        #[unsafe(method(attitude))]
119        #[unsafe(method_family = none)]
120        pub unsafe fn attitude(&self) -> Retained<CMAttitude>;
121
122        #[cfg(feature = "CMGyro")]
123        #[unsafe(method(rotationRate))]
124        #[unsafe(method_family = none)]
125        pub unsafe fn rotationRate(&self) -> CMRotationRate;
126
127        #[cfg(feature = "CMAccelerometer")]
128        #[unsafe(method(gravity))]
129        #[unsafe(method_family = none)]
130        pub unsafe fn gravity(&self) -> CMAcceleration;
131
132        #[cfg(feature = "CMAccelerometer")]
133        #[unsafe(method(userAcceleration))]
134        #[unsafe(method_family = none)]
135        pub unsafe fn userAcceleration(&self) -> CMAcceleration;
136
137        #[cfg(feature = "CMMagnetometer")]
138        #[unsafe(method(magneticField))]
139        #[unsafe(method_family = none)]
140        pub unsafe fn magneticField(&self) -> CMCalibratedMagneticField;
141
142        #[unsafe(method(heading))]
143        #[unsafe(method_family = none)]
144        pub unsafe fn heading(&self) -> c_double;
145
146        #[unsafe(method(sensorLocation))]
147        #[unsafe(method_family = none)]
148        pub unsafe fn sensorLocation(&self) -> CMDeviceMotionSensorLocation;
149    );
150}
151
152/// Methods declared on superclass `NSObject`.
153#[cfg(feature = "CMLogItem")]
154impl CMDeviceMotion {
155    extern_methods!(
156        #[unsafe(method(init))]
157        #[unsafe(method_family = init)]
158        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
159
160        #[unsafe(method(new))]
161        #[unsafe(method_family = new)]
162        pub unsafe fn new() -> Retained<Self>;
163    );
164}