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 gio_sys;
6use glib;
7use glib::translate::*;
8use glib::GString;
9use std;
10use std::mem;
11use std::ptr;
12use Error;
13use InputStream;
14use ResourceLookupFlags;
15
16glib_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
27impl Resource {
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
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
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
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
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}