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