objc2_core_foundation/generated/
CFDate.rs1use 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
12pub type CFTimeInterval = c_double;
14
15pub type CFAbsoluteTime = CFTimeInterval;
17
18extern "C-unwind" {
19 pub fn CFAbsoluteTimeGetCurrent() -> CFAbsoluteTime;
20}
21
22extern "C" {
23 pub static kCFAbsoluteTimeIntervalSince1970: CFTimeInterval;
25}
26
27extern "C" {
28 pub static kCFAbsoluteTimeIntervalSince1904: CFTimeInterval;
30}
31
32#[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#[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#[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#[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#[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}