objc2_core_foundation/generated/
CFDate.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::cell::UnsafeCell;
4use core::ffi::*;
5use core::marker::{PhantomData, PhantomPinned};
6use core::ptr::NonNull;
7#[cfg(feature = "objc2")]
8use objc2::__framework_prelude::*;
9
10use crate::*;
11
12/// [Apple's documentation](https://developer.apple.com/documentation/corefoundation/cftimeinterval?language=objc)
13pub type CFTimeInterval = c_double;
14
15/// [Apple's documentation](https://developer.apple.com/documentation/corefoundation/cfabsolutetime?language=objc)
16pub type CFAbsoluteTime = CFTimeInterval;
17
18extern "C-unwind" {
19    pub fn CFAbsoluteTimeGetCurrent() -> CFAbsoluteTime;
20}
21
22extern "C" {
23    /// [Apple's documentation](https://developer.apple.com/documentation/corefoundation/kcfabsolutetimeintervalsince1970?language=objc)
24    pub static kCFAbsoluteTimeIntervalSince1970: CFTimeInterval;
25}
26
27extern "C" {
28    /// [Apple's documentation](https://developer.apple.com/documentation/corefoundation/kcfabsolutetimeintervalsince1904?language=objc)
29    pub static kCFAbsoluteTimeIntervalSince1904: CFTimeInterval;
30}
31
32/// [Apple's documentation](https://developer.apple.com/documentation/corefoundation/cfdate?language=objc)
33#[repr(C)]
34pub struct CFDate {
35    inner: [u8; 0],
36    _p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
37}
38
39cf_type!(
40    #[encoding_name = "__CFDate"]
41    unsafe impl CFDate {}
42);
43
44#[cfg(feature = "CFBase")]
45unsafe impl ConcreteType for CFDate {
46    #[doc(alias = "CFDateGetTypeID")]
47    #[inline]
48    fn type_id() -> CFTypeID {
49        extern "C-unwind" {
50            fn CFDateGetTypeID() -> CFTypeID;
51        }
52        unsafe { CFDateGetTypeID() }
53    }
54}
55
56#[cfg(feature = "CFBase")]
57#[inline]
58pub unsafe extern "C-unwind" fn CFDateCreate(
59    allocator: Option<&CFAllocator>,
60    at: CFAbsoluteTime,
61) -> Option<CFRetained<CFDate>> {
62    extern "C-unwind" {
63        fn CFDateCreate(
64            allocator: Option<&CFAllocator>,
65            at: CFAbsoluteTime,
66        ) -> Option<NonNull<CFDate>>;
67    }
68    let ret = unsafe { CFDateCreate(allocator, at) };
69    ret.map(|ret| unsafe { CFRetained::from_raw(ret) })
70}
71
72extern "C-unwind" {
73    pub fn CFDateGetAbsoluteTime(the_date: &CFDate) -> CFAbsoluteTime;
74}
75
76extern "C-unwind" {
77    pub fn CFDateGetTimeIntervalSinceDate(
78        the_date: &CFDate,
79        other_date: Option<&CFDate>,
80    ) -> CFTimeInterval;
81}
82
83extern "C-unwind" {
84    #[cfg(feature = "CFBase")]
85    pub fn CFDateCompare(
86        the_date: &CFDate,
87        other_date: Option<&CFDate>,
88        context: *mut c_void,
89    ) -> CFComparisonResult;
90}
91
92/// [Apple's documentation](https://developer.apple.com/documentation/corefoundation/cftimezone?language=objc)
93#[repr(C)]
94pub struct CFTimeZone {
95    inner: [u8; 0],
96    _p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
97}
98
99cf_type!(
100    #[encoding_name = "__CFTimeZone"]
101    unsafe impl CFTimeZone {}
102);
103
104/// [Apple's documentation](https://developer.apple.com/documentation/corefoundation/cfgregoriandate?language=objc)
105#[repr(C)]
106#[derive(Clone, Copy, Debug, PartialEq)]
107pub struct CFGregorianDate {
108    pub year: i32,
109    pub month: i8,
110    pub day: i8,
111    pub hour: i8,
112    pub minute: i8,
113    pub second: c_double,
114}
115
116#[cfg(feature = "objc2")]
117unsafe impl Encode for CFGregorianDate {
118    const ENCODING: Encoding = Encoding::Struct(
119        "?",
120        &[
121            <i32>::ENCODING,
122            <i8>::ENCODING,
123            <i8>::ENCODING,
124            <i8>::ENCODING,
125            <i8>::ENCODING,
126            <c_double>::ENCODING,
127        ],
128    );
129}
130
131#[cfg(feature = "objc2")]
132unsafe impl RefEncode for CFGregorianDate {
133    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
134}
135
136/// [Apple's documentation](https://developer.apple.com/documentation/corefoundation/cfgregorianunits?language=objc)
137#[repr(C)]
138#[derive(Clone, Copy, Debug, PartialEq)]
139pub struct CFGregorianUnits {
140    pub years: i32,
141    pub months: i32,
142    pub days: i32,
143    pub hours: i32,
144    pub minutes: i32,
145    pub seconds: c_double,
146}
147
148#[cfg(feature = "objc2")]
149unsafe impl Encode for CFGregorianUnits {
150    const ENCODING: Encoding = Encoding::Struct(
151        "?",
152        &[
153            <i32>::ENCODING,
154            <i32>::ENCODING,
155            <i32>::ENCODING,
156            <i32>::ENCODING,
157            <i32>::ENCODING,
158            <c_double>::ENCODING,
159        ],
160    );
161}
162
163#[cfg(feature = "objc2")]
164unsafe impl RefEncode for CFGregorianUnits {
165    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
166}
167
168/// [Apple's documentation](https://developer.apple.com/documentation/corefoundation/cfgregorianunitflags?language=objc)
169// NS_OPTIONS
170#[cfg(feature = "CFBase")]
171#[repr(transparent)]
172#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
173pub struct CFGregorianUnitFlags(pub CFOptionFlags);
174#[cfg(feature = "CFBase")]
175bitflags::bitflags! {
176    impl CFGregorianUnitFlags: CFOptionFlags {
177#[deprecated = "Use CFCalendar or NSCalendar API instead"]
178        #[doc(alias = "kCFGregorianUnitsYears")]
179        const UnitsYears = 1<<0;
180#[deprecated = "Use CFCalendar or NSCalendar API instead"]
181        #[doc(alias = "kCFGregorianUnitsMonths")]
182        const UnitsMonths = 1<<1;
183#[deprecated = "Use CFCalendar or NSCalendar API instead"]
184        #[doc(alias = "kCFGregorianUnitsDays")]
185        const UnitsDays = 1<<2;
186#[deprecated = "Use CFCalendar or NSCalendar API instead"]
187        #[doc(alias = "kCFGregorianUnitsHours")]
188        const UnitsHours = 1<<3;
189#[deprecated = "Use CFCalendar or NSCalendar API instead"]
190        #[doc(alias = "kCFGregorianUnitsMinutes")]
191        const UnitsMinutes = 1<<4;
192#[deprecated = "Use CFCalendar or NSCalendar API instead"]
193        #[doc(alias = "kCFGregorianUnitsSeconds")]
194        const UnitsSeconds = 1<<5;
195#[deprecated = "Use CFCalendar or NSCalendar API instead"]
196        #[doc(alias = "kCFGregorianAllUnits")]
197        const AllUnits = 0x00FFFFFF;
198    }
199}
200
201#[cfg(all(feature = "CFBase", feature = "objc2"))]
202unsafe impl Encode for CFGregorianUnitFlags {
203    const ENCODING: Encoding = CFOptionFlags::ENCODING;
204}
205
206#[cfg(all(feature = "CFBase", feature = "objc2"))]
207unsafe impl RefEncode for CFGregorianUnitFlags {
208    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
209}
210
211#[cfg(feature = "CFBase")]
212#[deprecated = "Use CFCalendar or NSCalendar API instead"]
213#[inline]
214pub unsafe extern "C-unwind" fn CFGregorianDateIsValid(
215    gdate: CFGregorianDate,
216    unit_flags: CFOptionFlags,
217) -> bool {
218    extern "C-unwind" {
219        fn CFGregorianDateIsValid(gdate: CFGregorianDate, unit_flags: CFOptionFlags) -> Boolean;
220    }
221    let ret = unsafe { CFGregorianDateIsValid(gdate, unit_flags) };
222    ret != 0
223}
224
225extern "C-unwind" {
226    #[deprecated = "Use CFCalendar or NSCalendar API instead"]
227    pub fn CFGregorianDateGetAbsoluteTime(
228        gdate: CFGregorianDate,
229        tz: Option<&CFTimeZone>,
230    ) -> CFAbsoluteTime;
231}
232
233extern "C-unwind" {
234    #[deprecated = "Use CFCalendar or NSCalendar API instead"]
235    pub fn CFAbsoluteTimeGetGregorianDate(
236        at: CFAbsoluteTime,
237        tz: Option<&CFTimeZone>,
238    ) -> CFGregorianDate;
239}
240
241extern "C-unwind" {
242    #[deprecated = "Use CFCalendar or NSCalendar API instead"]
243    pub fn CFAbsoluteTimeAddGregorianUnits(
244        at: CFAbsoluteTime,
245        tz: Option<&CFTimeZone>,
246        units: CFGregorianUnits,
247    ) -> CFAbsoluteTime;
248}
249
250extern "C-unwind" {
251    #[cfg(feature = "CFBase")]
252    #[deprecated = "Use CFCalendar or NSCalendar API instead"]
253    pub fn CFAbsoluteTimeGetDifferenceAsGregorianUnits(
254        at1: CFAbsoluteTime,
255        at2: CFAbsoluteTime,
256        tz: Option<&CFTimeZone>,
257        unit_flags: CFOptionFlags,
258    ) -> CFGregorianUnits;
259}
260
261extern "C-unwind" {
262    #[deprecated = "Use CFCalendar or NSCalendar API instead"]
263    pub fn CFAbsoluteTimeGetDayOfWeek(at: CFAbsoluteTime, tz: Option<&CFTimeZone>) -> i32;
264}
265
266extern "C-unwind" {
267    #[deprecated = "Use CFCalendar or NSCalendar API instead"]
268    pub fn CFAbsoluteTimeGetDayOfYear(at: CFAbsoluteTime, tz: Option<&CFTimeZone>) -> i32;
269}
270
271extern "C-unwind" {
272    #[deprecated = "Use CFCalendar or NSCalendar API instead"]
273    pub fn CFAbsoluteTimeGetWeekOfYear(at: CFAbsoluteTime, tz: Option<&CFTimeZone>) -> i32;
274}