1 | // This file was generated by gir (https://github.com/gtk-rs/gir) |
2 | // from gir-files (https://github.com/gtk-rs/gir-files) |
3 | // DO NOT EDIT |
4 | |
5 | use crate::{ffi, translate::*, BoolError, TimeSpan, TimeZone}; |
6 | |
7 | crate::wrapper! { |
8 | #[derive (Debug)] |
9 | pub struct DateTime(Shared<ffi::GDateTime>); |
10 | |
11 | match fn { |
12 | ref => |ptr| ffi::g_date_time_ref(ptr), |
13 | unref => |ptr| ffi::g_date_time_unref(ptr), |
14 | type_ => || ffi::g_date_time_get_type(), |
15 | } |
16 | } |
17 | |
18 | impl DateTime { |
19 | #[doc (alias = "g_date_time_new" )] |
20 | pub fn new( |
21 | tz: &TimeZone, |
22 | year: i32, |
23 | month: i32, |
24 | day: i32, |
25 | hour: i32, |
26 | minute: i32, |
27 | seconds: f64, |
28 | ) -> Result<DateTime, BoolError> { |
29 | unsafe { |
30 | Option::<_>::from_glib_full(ffi::g_date_time_new( |
31 | tz.to_glib_none().0, |
32 | year, |
33 | month, |
34 | day, |
35 | hour, |
36 | minute, |
37 | seconds, |
38 | )) |
39 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
40 | } |
41 | } |
42 | |
43 | #[doc (alias = "g_date_time_new_from_iso8601" )] |
44 | #[doc (alias = "new_from_iso8601" )] |
45 | pub fn from_iso8601(text: &str, default_tz: Option<&TimeZone>) -> Result<DateTime, BoolError> { |
46 | unsafe { |
47 | Option::<_>::from_glib_full(ffi::g_date_time_new_from_iso8601( |
48 | text.to_glib_none().0, |
49 | default_tz.to_glib_none().0, |
50 | )) |
51 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
52 | } |
53 | } |
54 | |
55 | //#[cfg_attr(feature = "v2_62", deprecated = "Since 2.62")] |
56 | //#[allow(deprecated)] |
57 | //#[doc(alias = "g_date_time_new_from_timeval_local")] |
58 | //#[doc(alias = "new_from_timeval_local")] |
59 | //pub fn from_timeval_local(tv: /*Ignored*/&TimeVal) -> Result<DateTime, BoolError> { |
60 | // unsafe { TODO: call ffi:g_date_time_new_from_timeval_local() } |
61 | //} |
62 | |
63 | //#[cfg_attr(feature = "v2_62", deprecated = "Since 2.62")] |
64 | //#[allow(deprecated)] |
65 | //#[doc(alias = "g_date_time_new_from_timeval_utc")] |
66 | //#[doc(alias = "new_from_timeval_utc")] |
67 | //pub fn from_timeval_utc(tv: /*Ignored*/&TimeVal) -> Result<DateTime, BoolError> { |
68 | // unsafe { TODO: call ffi:g_date_time_new_from_timeval_utc() } |
69 | //} |
70 | |
71 | #[doc (alias = "g_date_time_new_from_unix_local" )] |
72 | #[doc (alias = "new_from_unix_local" )] |
73 | pub fn from_unix_local(t: i64) -> Result<DateTime, BoolError> { |
74 | unsafe { |
75 | Option::<_>::from_glib_full(ffi::g_date_time_new_from_unix_local(t)) |
76 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
77 | } |
78 | } |
79 | |
80 | #[cfg (feature = "v2_80" )] |
81 | #[cfg_attr (docsrs, doc(cfg(feature = "v2_80" )))] |
82 | #[doc (alias = "g_date_time_new_from_unix_local_usec" )] |
83 | #[doc (alias = "new_from_unix_local_usec" )] |
84 | pub fn from_unix_local_usec(usecs: i64) -> Result<DateTime, BoolError> { |
85 | unsafe { |
86 | Option::<_>::from_glib_full(ffi::g_date_time_new_from_unix_local_usec(usecs)) |
87 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
88 | } |
89 | } |
90 | |
91 | #[doc (alias = "g_date_time_new_from_unix_utc" )] |
92 | #[doc (alias = "new_from_unix_utc" )] |
93 | pub fn from_unix_utc(t: i64) -> Result<DateTime, BoolError> { |
94 | unsafe { |
95 | Option::<_>::from_glib_full(ffi::g_date_time_new_from_unix_utc(t)) |
96 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
97 | } |
98 | } |
99 | |
100 | #[cfg (feature = "v2_80" )] |
101 | #[cfg_attr (docsrs, doc(cfg(feature = "v2_80" )))] |
102 | #[doc (alias = "g_date_time_new_from_unix_utc_usec" )] |
103 | #[doc (alias = "new_from_unix_utc_usec" )] |
104 | pub fn from_unix_utc_usec(usecs: i64) -> Result<DateTime, BoolError> { |
105 | unsafe { |
106 | Option::<_>::from_glib_full(ffi::g_date_time_new_from_unix_utc_usec(usecs)) |
107 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
108 | } |
109 | } |
110 | |
111 | #[doc (alias = "g_date_time_new_local" )] |
112 | #[doc (alias = "new_local" )] |
113 | pub fn from_local( |
114 | year: i32, |
115 | month: i32, |
116 | day: i32, |
117 | hour: i32, |
118 | minute: i32, |
119 | seconds: f64, |
120 | ) -> Result<DateTime, BoolError> { |
121 | unsafe { |
122 | Option::<_>::from_glib_full(ffi::g_date_time_new_local( |
123 | year, month, day, hour, minute, seconds, |
124 | )) |
125 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
126 | } |
127 | } |
128 | |
129 | #[doc (alias = "g_date_time_new_now" )] |
130 | #[doc (alias = "new_now" )] |
131 | pub fn now(tz: &TimeZone) -> Result<DateTime, BoolError> { |
132 | unsafe { |
133 | Option::<_>::from_glib_full(ffi::g_date_time_new_now(tz.to_glib_none().0)) |
134 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
135 | } |
136 | } |
137 | |
138 | #[doc (alias = "g_date_time_new_now_local" )] |
139 | #[doc (alias = "new_now_local" )] |
140 | pub fn now_local() -> Result<DateTime, BoolError> { |
141 | unsafe { |
142 | Option::<_>::from_glib_full(ffi::g_date_time_new_now_local()) |
143 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
144 | } |
145 | } |
146 | |
147 | #[doc (alias = "g_date_time_new_now_utc" )] |
148 | #[doc (alias = "new_now_utc" )] |
149 | pub fn now_utc() -> Result<DateTime, BoolError> { |
150 | unsafe { |
151 | Option::<_>::from_glib_full(ffi::g_date_time_new_now_utc()) |
152 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
153 | } |
154 | } |
155 | |
156 | #[doc (alias = "g_date_time_new_utc" )] |
157 | #[doc (alias = "new_utc" )] |
158 | pub fn from_utc( |
159 | year: i32, |
160 | month: i32, |
161 | day: i32, |
162 | hour: i32, |
163 | minute: i32, |
164 | seconds: f64, |
165 | ) -> Result<DateTime, BoolError> { |
166 | unsafe { |
167 | Option::<_>::from_glib_full(ffi::g_date_time_new_utc( |
168 | year, month, day, hour, minute, seconds, |
169 | )) |
170 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
171 | } |
172 | } |
173 | |
174 | #[doc (alias = "g_date_time_add" )] |
175 | pub fn add(&self, timespan: TimeSpan) -> Result<DateTime, BoolError> { |
176 | unsafe { |
177 | Option::<_>::from_glib_full(ffi::g_date_time_add( |
178 | self.to_glib_none().0, |
179 | timespan.into_glib(), |
180 | )) |
181 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
182 | } |
183 | } |
184 | |
185 | #[doc (alias = "g_date_time_add_days" )] |
186 | pub fn add_days(&self, days: i32) -> Result<DateTime, BoolError> { |
187 | unsafe { |
188 | Option::<_>::from_glib_full(ffi::g_date_time_add_days(self.to_glib_none().0, days)) |
189 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
190 | } |
191 | } |
192 | |
193 | #[doc (alias = "g_date_time_add_full" )] |
194 | pub fn add_full( |
195 | &self, |
196 | years: i32, |
197 | months: i32, |
198 | days: i32, |
199 | hours: i32, |
200 | minutes: i32, |
201 | seconds: f64, |
202 | ) -> Result<DateTime, BoolError> { |
203 | unsafe { |
204 | Option::<_>::from_glib_full(ffi::g_date_time_add_full( |
205 | self.to_glib_none().0, |
206 | years, |
207 | months, |
208 | days, |
209 | hours, |
210 | minutes, |
211 | seconds, |
212 | )) |
213 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
214 | } |
215 | } |
216 | |
217 | #[doc (alias = "g_date_time_add_hours" )] |
218 | pub fn add_hours(&self, hours: i32) -> Result<DateTime, BoolError> { |
219 | unsafe { |
220 | Option::<_>::from_glib_full(ffi::g_date_time_add_hours(self.to_glib_none().0, hours)) |
221 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
222 | } |
223 | } |
224 | |
225 | #[doc (alias = "g_date_time_add_minutes" )] |
226 | pub fn add_minutes(&self, minutes: i32) -> Result<DateTime, BoolError> { |
227 | unsafe { |
228 | Option::<_>::from_glib_full(ffi::g_date_time_add_minutes( |
229 | self.to_glib_none().0, |
230 | minutes, |
231 | )) |
232 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
233 | } |
234 | } |
235 | |
236 | #[doc (alias = "g_date_time_add_months" )] |
237 | pub fn add_months(&self, months: i32) -> Result<DateTime, BoolError> { |
238 | unsafe { |
239 | Option::<_>::from_glib_full(ffi::g_date_time_add_months(self.to_glib_none().0, months)) |
240 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
241 | } |
242 | } |
243 | |
244 | #[doc (alias = "g_date_time_add_seconds" )] |
245 | pub fn add_seconds(&self, seconds: f64) -> Result<DateTime, BoolError> { |
246 | unsafe { |
247 | Option::<_>::from_glib_full(ffi::g_date_time_add_seconds( |
248 | self.to_glib_none().0, |
249 | seconds, |
250 | )) |
251 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
252 | } |
253 | } |
254 | |
255 | #[doc (alias = "g_date_time_add_weeks" )] |
256 | pub fn add_weeks(&self, weeks: i32) -> Result<DateTime, BoolError> { |
257 | unsafe { |
258 | Option::<_>::from_glib_full(ffi::g_date_time_add_weeks(self.to_glib_none().0, weeks)) |
259 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
260 | } |
261 | } |
262 | |
263 | #[doc (alias = "g_date_time_add_years" )] |
264 | pub fn add_years(&self, years: i32) -> Result<DateTime, BoolError> { |
265 | unsafe { |
266 | Option::<_>::from_glib_full(ffi::g_date_time_add_years(self.to_glib_none().0, years)) |
267 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
268 | } |
269 | } |
270 | |
271 | #[doc (alias = "g_date_time_compare" )] |
272 | fn compare(&self, dt2: &DateTime) -> i32 { |
273 | unsafe { |
274 | ffi::g_date_time_compare( |
275 | ToGlibPtr::<*mut ffi::GDateTime>::to_glib_none(self).0 as ffi::gconstpointer, |
276 | ToGlibPtr::<*mut ffi::GDateTime>::to_glib_none(dt2).0 as ffi::gconstpointer, |
277 | ) |
278 | } |
279 | } |
280 | |
281 | #[doc (alias = "g_date_time_difference" )] |
282 | pub fn difference(&self, begin: &DateTime) -> TimeSpan { |
283 | unsafe { |
284 | from_glib(ffi::g_date_time_difference( |
285 | self.to_glib_none().0, |
286 | begin.to_glib_none().0, |
287 | )) |
288 | } |
289 | } |
290 | |
291 | #[doc (alias = "g_date_time_equal" )] |
292 | fn equal(&self, dt2: &DateTime) -> bool { |
293 | unsafe { |
294 | from_glib(ffi::g_date_time_equal( |
295 | ToGlibPtr::<*mut ffi::GDateTime>::to_glib_none(self).0 as ffi::gconstpointer, |
296 | ToGlibPtr::<*mut ffi::GDateTime>::to_glib_none(dt2).0 as ffi::gconstpointer, |
297 | )) |
298 | } |
299 | } |
300 | |
301 | #[doc (alias = "g_date_time_format" )] |
302 | pub fn format(&self, format: &str) -> Result<crate::GString, BoolError> { |
303 | unsafe { |
304 | Option::<_>::from_glib_full(ffi::g_date_time_format( |
305 | self.to_glib_none().0, |
306 | format.to_glib_none().0, |
307 | )) |
308 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
309 | } |
310 | } |
311 | |
312 | #[cfg (feature = "v2_62" )] |
313 | #[cfg_attr (docsrs, doc(cfg(feature = "v2_62" )))] |
314 | #[doc (alias = "g_date_time_format_iso8601" )] |
315 | pub fn format_iso8601(&self) -> Result<crate::GString, BoolError> { |
316 | unsafe { |
317 | Option::<_>::from_glib_full(ffi::g_date_time_format_iso8601(self.to_glib_none().0)) |
318 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
319 | } |
320 | } |
321 | |
322 | #[doc (alias = "g_date_time_get_day_of_month" )] |
323 | #[doc (alias = "get_day_of_month" )] |
324 | pub fn day_of_month(&self) -> i32 { |
325 | unsafe { ffi::g_date_time_get_day_of_month(self.to_glib_none().0) } |
326 | } |
327 | |
328 | #[doc (alias = "g_date_time_get_day_of_week" )] |
329 | #[doc (alias = "get_day_of_week" )] |
330 | pub fn day_of_week(&self) -> i32 { |
331 | unsafe { ffi::g_date_time_get_day_of_week(self.to_glib_none().0) } |
332 | } |
333 | |
334 | #[doc (alias = "g_date_time_get_day_of_year" )] |
335 | #[doc (alias = "get_day_of_year" )] |
336 | pub fn day_of_year(&self) -> i32 { |
337 | unsafe { ffi::g_date_time_get_day_of_year(self.to_glib_none().0) } |
338 | } |
339 | |
340 | #[doc (alias = "g_date_time_get_hour" )] |
341 | #[doc (alias = "get_hour" )] |
342 | pub fn hour(&self) -> i32 { |
343 | unsafe { ffi::g_date_time_get_hour(self.to_glib_none().0) } |
344 | } |
345 | |
346 | #[doc (alias = "g_date_time_get_microsecond" )] |
347 | #[doc (alias = "get_microsecond" )] |
348 | pub fn microsecond(&self) -> i32 { |
349 | unsafe { ffi::g_date_time_get_microsecond(self.to_glib_none().0) } |
350 | } |
351 | |
352 | #[doc (alias = "g_date_time_get_minute" )] |
353 | #[doc (alias = "get_minute" )] |
354 | pub fn minute(&self) -> i32 { |
355 | unsafe { ffi::g_date_time_get_minute(self.to_glib_none().0) } |
356 | } |
357 | |
358 | #[doc (alias = "g_date_time_get_month" )] |
359 | #[doc (alias = "get_month" )] |
360 | pub fn month(&self) -> i32 { |
361 | unsafe { ffi::g_date_time_get_month(self.to_glib_none().0) } |
362 | } |
363 | |
364 | #[doc (alias = "g_date_time_get_second" )] |
365 | #[doc (alias = "get_second" )] |
366 | pub fn second(&self) -> i32 { |
367 | unsafe { ffi::g_date_time_get_second(self.to_glib_none().0) } |
368 | } |
369 | |
370 | #[doc (alias = "g_date_time_get_seconds" )] |
371 | #[doc (alias = "get_seconds" )] |
372 | pub fn seconds(&self) -> f64 { |
373 | unsafe { ffi::g_date_time_get_seconds(self.to_glib_none().0) } |
374 | } |
375 | |
376 | #[cfg (feature = "v2_58" )] |
377 | #[cfg_attr (docsrs, doc(cfg(feature = "v2_58" )))] |
378 | #[doc (alias = "g_date_time_get_timezone" )] |
379 | #[doc (alias = "get_timezone" )] |
380 | pub fn timezone(&self) -> TimeZone { |
381 | unsafe { from_glib_none(ffi::g_date_time_get_timezone(self.to_glib_none().0)) } |
382 | } |
383 | |
384 | #[doc (alias = "g_date_time_get_timezone_abbreviation" )] |
385 | #[doc (alias = "get_timezone_abbreviation" )] |
386 | pub fn timezone_abbreviation(&self) -> crate::GString { |
387 | unsafe { |
388 | from_glib_none(ffi::g_date_time_get_timezone_abbreviation( |
389 | self.to_glib_none().0, |
390 | )) |
391 | } |
392 | } |
393 | |
394 | #[doc (alias = "g_date_time_get_utc_offset" )] |
395 | #[doc (alias = "get_utc_offset" )] |
396 | pub fn utc_offset(&self) -> TimeSpan { |
397 | unsafe { from_glib(ffi::g_date_time_get_utc_offset(self.to_glib_none().0)) } |
398 | } |
399 | |
400 | #[doc (alias = "g_date_time_get_week_numbering_year" )] |
401 | #[doc (alias = "get_week_numbering_year" )] |
402 | pub fn week_numbering_year(&self) -> i32 { |
403 | unsafe { ffi::g_date_time_get_week_numbering_year(self.to_glib_none().0) } |
404 | } |
405 | |
406 | #[doc (alias = "g_date_time_get_week_of_year" )] |
407 | #[doc (alias = "get_week_of_year" )] |
408 | pub fn week_of_year(&self) -> i32 { |
409 | unsafe { ffi::g_date_time_get_week_of_year(self.to_glib_none().0) } |
410 | } |
411 | |
412 | #[doc (alias = "g_date_time_get_year" )] |
413 | #[doc (alias = "get_year" )] |
414 | pub fn year(&self) -> i32 { |
415 | unsafe { ffi::g_date_time_get_year(self.to_glib_none().0) } |
416 | } |
417 | |
418 | #[doc (alias = "g_date_time_get_ymd" )] |
419 | #[doc (alias = "get_ymd" )] |
420 | pub fn ymd(&self) -> (i32, i32, i32) { |
421 | unsafe { |
422 | let mut year = std::mem::MaybeUninit::uninit(); |
423 | let mut month = std::mem::MaybeUninit::uninit(); |
424 | let mut day = std::mem::MaybeUninit::uninit(); |
425 | ffi::g_date_time_get_ymd( |
426 | self.to_glib_none().0, |
427 | year.as_mut_ptr(), |
428 | month.as_mut_ptr(), |
429 | day.as_mut_ptr(), |
430 | ); |
431 | (year.assume_init(), month.assume_init(), day.assume_init()) |
432 | } |
433 | } |
434 | |
435 | #[doc (alias = "g_date_time_hash" )] |
436 | fn hash(&self) -> u32 { |
437 | unsafe { |
438 | ffi::g_date_time_hash( |
439 | ToGlibPtr::<*mut ffi::GDateTime>::to_glib_none(self).0 as ffi::gconstpointer, |
440 | ) |
441 | } |
442 | } |
443 | |
444 | #[doc (alias = "g_date_time_is_daylight_savings" )] |
445 | pub fn is_daylight_savings(&self) -> bool { |
446 | unsafe { from_glib(ffi::g_date_time_is_daylight_savings(self.to_glib_none().0)) } |
447 | } |
448 | |
449 | #[doc (alias = "g_date_time_to_local" )] |
450 | pub fn to_local(&self) -> Result<DateTime, BoolError> { |
451 | unsafe { |
452 | Option::<_>::from_glib_full(ffi::g_date_time_to_local(self.to_glib_none().0)) |
453 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
454 | } |
455 | } |
456 | |
457 | //#[cfg_attr(feature = "v2_62", deprecated = "Since 2.62")] |
458 | //#[allow(deprecated)] |
459 | //#[doc(alias = "g_date_time_to_timeval")] |
460 | //pub fn to_timeval(&self, tv: /*Ignored*/&mut TimeVal) -> bool { |
461 | // unsafe { TODO: call ffi:g_date_time_to_timeval() } |
462 | //} |
463 | |
464 | #[doc (alias = "g_date_time_to_timezone" )] |
465 | pub fn to_timezone(&self, tz: &TimeZone) -> Result<DateTime, BoolError> { |
466 | unsafe { |
467 | Option::<_>::from_glib_full(ffi::g_date_time_to_timezone( |
468 | self.to_glib_none().0, |
469 | tz.to_glib_none().0, |
470 | )) |
471 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
472 | } |
473 | } |
474 | |
475 | #[doc (alias = "g_date_time_to_unix" )] |
476 | pub fn to_unix(&self) -> i64 { |
477 | unsafe { ffi::g_date_time_to_unix(self.to_glib_none().0) } |
478 | } |
479 | |
480 | #[cfg (feature = "v2_80" )] |
481 | #[cfg_attr (docsrs, doc(cfg(feature = "v2_80" )))] |
482 | #[doc (alias = "g_date_time_to_unix_usec" )] |
483 | pub fn to_unix_usec(&self) -> i64 { |
484 | unsafe { ffi::g_date_time_to_unix_usec(self.to_glib_none().0) } |
485 | } |
486 | |
487 | #[doc (alias = "g_date_time_to_utc" )] |
488 | pub fn to_utc(&self) -> Result<DateTime, BoolError> { |
489 | unsafe { |
490 | Option::<_>::from_glib_full(ffi::g_date_time_to_utc(self.to_glib_none().0)) |
491 | .ok_or_else(|| crate::bool_error!("Invalid date" )) |
492 | } |
493 | } |
494 | } |
495 | |
496 | impl PartialOrd for DateTime { |
497 | #[inline ] |
498 | fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> { |
499 | Some(self.cmp(other)) |
500 | } |
501 | } |
502 | |
503 | impl Ord for DateTime { |
504 | #[inline ] |
505 | fn cmp(&self, other: &Self) -> std::cmp::Ordering { |
506 | self.compare(dt2:other).cmp(&0) |
507 | } |
508 | } |
509 | |
510 | impl PartialEq for DateTime { |
511 | #[inline ] |
512 | fn eq(&self, other: &Self) -> bool { |
513 | self.equal(dt2:other) |
514 | } |
515 | } |
516 | |
517 | impl Eq for DateTime {} |
518 | |
519 | impl std::hash::Hash for DateTime { |
520 | #[inline ] |
521 | fn hash<H>(&self, state: &mut H) |
522 | where |
523 | H: std::hash::Hasher, |
524 | { |
525 | std::hash::Hash::hash(&self.hash(), state) |
526 | } |
527 | } |
528 | |
529 | unsafe impl Send for DateTime {} |
530 | unsafe impl Sync for DateTime {} |
531 | |