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