1use glib_sys;
6use translate::*;
7use GString;
8use TimeType;
9
10glib_wrapper! {
11 #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
12 pub struct TimeZone(Shared<glib_sys::GTimeZone>);
13
14 match fn {
15 ref => |ptr| glib_sys::g_time_zone_ref(ptr),
16 unref => |ptr| glib_sys::g_time_zone_unref(ptr),
17 get_type => || glib_sys::g_time_zone_get_type(),
18 }
19}
20
21impl TimeZone {
22 pub fn new(identifier: Option<&str>) -> TimeZone {
23 unsafe { from_glib_full(glib_sys::g_time_zone_new(identifier.to_glib_none().0)) }
24 }
25
26 pub fn new_local() -> TimeZone {
27 unsafe { from_glib_full(glib_sys::g_time_zone_new_local()) }
28 }
29
30 #[cfg(any(feature = "v2_58", feature = "dox"))]
31 pub fn new_offset(seconds: i32) -> TimeZone {
32 unsafe { from_glib_full(glib_sys::g_time_zone_new_offset(seconds)) }
33 }
34
35 pub fn new_utc() -> TimeZone {
36 unsafe { from_glib_full(glib_sys::g_time_zone_new_utc()) }
37 }
38
39 pub fn find_interval(&self, type_: TimeType, time_: i64) -> i32 {
40 unsafe {
41 glib_sys::g_time_zone_find_interval(self.to_glib_none().0, type_.to_glib(), time_)
42 }
43 }
44
45 pub fn get_abbreviation(&self, interval: i32) -> Option<GString> {
46 unsafe {
47 from_glib_none(glib_sys::g_time_zone_get_abbreviation(
48 self.to_glib_none().0,
49 interval,
50 ))
51 }
52 }
53
54 #[cfg(any(feature = "v2_58", feature = "dox"))]
55 pub fn get_identifier(&self) -> Option<GString> {
56 unsafe { from_glib_none(glib_sys::g_time_zone_get_identifier(self.to_glib_none().0)) }
57 }
58
59 pub fn get_offset(&self, interval: i32) -> i32 {
60 unsafe { glib_sys::g_time_zone_get_offset(self.to_glib_none().0, interval) }
61 }
62
63 pub fn is_dst(&self, interval: i32) -> bool {
64 unsafe {
65 from_glib(glib_sys::g_time_zone_is_dst(
66 self.to_glib_none().0,
67 interval,
68 ))
69 }
70 }
71}
72
73unsafe impl Send for TimeZone {}
74unsafe impl Sync for TimeZone {}