[go: up one dir, main page]

gio/auto/
resource.rs

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
5use crate::{ffi, InputStream, ResourceLookupFlags};
6use glib::translate::*;
7
8glib::wrapper! {
9    #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
10    pub struct Resource(Shared<ffi::GResource>);
11
12    match fn {
13        ref => |ptr| ffi::g_resource_ref(ptr),
14        unref => |ptr| ffi::g_resource_unref(ptr),
15        type_ => || ffi::g_resource_get_type(),
16    }
17}
18
19impl Resource {
20    #[doc(alias = "g_resource_enumerate_children")]
21    pub fn enumerate_children(
22        &self,
23        path: &str,
24        lookup_flags: ResourceLookupFlags,
25    ) -> Result<Vec<glib::GString>, glib::Error> {
26        unsafe {
27            let mut error = std::ptr::null_mut();
28            let ret = ffi::g_resource_enumerate_children(
29                self.to_glib_none().0,
30                path.to_glib_none().0,
31                lookup_flags.into_glib(),
32                &mut error,
33            );
34            if error.is_null() {
35                Ok(FromGlibPtrContainer::from_glib_full(ret))
36            } else {
37                Err(from_glib_full(error))
38            }
39        }
40    }
41
42    #[doc(alias = "g_resource_get_info")]
43    #[doc(alias = "get_info")]
44    pub fn info(
45        &self,
46        path: &str,
47        lookup_flags: ResourceLookupFlags,
48    ) -> Result<(usize, u32), glib::Error> {
49        unsafe {
50            let mut size = std::mem::MaybeUninit::uninit();
51            let mut flags = std::mem::MaybeUninit::uninit();
52            let mut error = std::ptr::null_mut();
53            let is_ok = ffi::g_resource_get_info(
54                self.to_glib_none().0,
55                path.to_glib_none().0,
56                lookup_flags.into_glib(),
57                size.as_mut_ptr(),
58                flags.as_mut_ptr(),
59                &mut error,
60            );
61            debug_assert_eq!(is_ok == glib::ffi::GFALSE, !error.is_null());
62            if error.is_null() {
63                Ok((size.assume_init(), flags.assume_init()))
64            } else {
65                Err(from_glib_full(error))
66            }
67        }
68    }
69
70    #[cfg(feature = "v2_84")]
71    #[cfg_attr(docsrs, doc(cfg(feature = "v2_84")))]
72    #[doc(alias = "g_resource_has_children")]
73    pub fn has_children(&self, path: &str) -> bool {
74        unsafe {
75            from_glib(ffi::g_resource_has_children(
76                self.to_glib_none().0,
77                path.to_glib_none().0,
78            ))
79        }
80    }
81
82    #[doc(alias = "g_resource_lookup_data")]
83    pub fn lookup_data(
84        &self,
85        path: &str,
86        lookup_flags: ResourceLookupFlags,
87    ) -> Result<glib::Bytes, glib::Error> {
88        unsafe {
89            let mut error = std::ptr::null_mut();
90            let ret = ffi::g_resource_lookup_data(
91                self.to_glib_none().0,
92                path.to_glib_none().0,
93                lookup_flags.into_glib(),
94                &mut error,
95            );
96            if error.is_null() {
97                Ok(from_glib_full(ret))
98            } else {
99                Err(from_glib_full(error))
100            }
101        }
102    }
103
104    #[doc(alias = "g_resource_open_stream")]
105    pub fn open_stream(
106        &self,
107        path: &str,
108        lookup_flags: ResourceLookupFlags,
109    ) -> Result<InputStream, glib::Error> {
110        unsafe {
111            let mut error = std::ptr::null_mut();
112            let ret = ffi::g_resource_open_stream(
113                self.to_glib_none().0,
114                path.to_glib_none().0,
115                lookup_flags.into_glib(),
116                &mut error,
117            );
118            if error.is_null() {
119                Ok(from_glib_full(ret))
120            } else {
121                Err(from_glib_full(error))
122            }
123        }
124    }
125
126    #[doc(alias = "g_resource_load")]
127    pub fn load(filename: impl AsRef<std::path::Path>) -> Result<Resource, glib::Error> {
128        unsafe {
129            let mut error = std::ptr::null_mut();
130            let ret = ffi::g_resource_load(filename.as_ref().to_glib_none().0, &mut error);
131            if error.is_null() {
132                Ok(from_glib_full(ret))
133            } else {
134                Err(from_glib_full(error))
135            }
136        }
137    }
138}