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 crate::Cancellable;
6 use glib::object::IsA;
7 use glib::translate::*;
8 use std::fmt;
9 use std::ptr;
10 
11 glib::wrapper! {
12     #[doc(alias = "GSeekable")]
13     pub struct Seekable(Interface<ffi::GSeekable, ffi::GSeekableIface>);
14 
15     match fn {
16         type_ => || ffi::g_seekable_get_type(),
17     }
18 }
19 
20 pub const NONE_SEEKABLE: Option<&Seekable> = None;
21 
22 pub trait SeekableExt: 'static {
23     #[doc(alias = "g_seekable_can_seek")]
can_seek(&self) -> bool24     fn can_seek(&self) -> bool;
25 
26     #[doc(alias = "g_seekable_can_truncate")]
can_truncate(&self) -> bool27     fn can_truncate(&self) -> bool;
28 
29     #[doc(alias = "g_seekable_seek")]
seek<P: IsA<Cancellable>>( &self, offset: i64, type_: glib::SeekType, cancellable: Option<&P>, ) -> Result<(), glib::Error>30     fn seek<P: IsA<Cancellable>>(
31         &self,
32         offset: i64,
33         type_: glib::SeekType,
34         cancellable: Option<&P>,
35     ) -> Result<(), glib::Error>;
36 
37     #[doc(alias = "g_seekable_tell")]
tell(&self) -> i6438     fn tell(&self) -> i64;
39 
40     #[doc(alias = "g_seekable_truncate")]
truncate<P: IsA<Cancellable>>( &self, offset: i64, cancellable: Option<&P>, ) -> Result<(), glib::Error>41     fn truncate<P: IsA<Cancellable>>(
42         &self,
43         offset: i64,
44         cancellable: Option<&P>,
45     ) -> Result<(), glib::Error>;
46 }
47 
48 impl<O: IsA<Seekable>> SeekableExt for O {
can_seek(&self) -> bool49     fn can_seek(&self) -> bool {
50         unsafe { from_glib(ffi::g_seekable_can_seek(self.as_ref().to_glib_none().0)) }
51     }
52 
can_truncate(&self) -> bool53     fn can_truncate(&self) -> bool {
54         unsafe { from_glib(ffi::g_seekable_can_truncate(self.as_ref().to_glib_none().0)) }
55     }
56 
seek<P: IsA<Cancellable>>( &self, offset: i64, type_: glib::SeekType, cancellable: Option<&P>, ) -> Result<(), glib::Error>57     fn seek<P: IsA<Cancellable>>(
58         &self,
59         offset: i64,
60         type_: glib::SeekType,
61         cancellable: Option<&P>,
62     ) -> Result<(), glib::Error> {
63         unsafe {
64             let mut error = ptr::null_mut();
65             let _ = ffi::g_seekable_seek(
66                 self.as_ref().to_glib_none().0,
67                 offset,
68                 type_.into_glib(),
69                 cancellable.map(|p| p.as_ref()).to_glib_none().0,
70                 &mut error,
71             );
72             if error.is_null() {
73                 Ok(())
74             } else {
75                 Err(from_glib_full(error))
76             }
77         }
78     }
79 
tell(&self) -> i6480     fn tell(&self) -> i64 {
81         unsafe { ffi::g_seekable_tell(self.as_ref().to_glib_none().0) }
82     }
83 
truncate<P: IsA<Cancellable>>( &self, offset: i64, cancellable: Option<&P>, ) -> Result<(), glib::Error>84     fn truncate<P: IsA<Cancellable>>(
85         &self,
86         offset: i64,
87         cancellable: Option<&P>,
88     ) -> Result<(), glib::Error> {
89         unsafe {
90             let mut error = ptr::null_mut();
91             let _ = ffi::g_seekable_truncate(
92                 self.as_ref().to_glib_none().0,
93                 offset,
94                 cancellable.map(|p| p.as_ref()).to_glib_none().0,
95                 &mut error,
96             );
97             if error.is_null() {
98                 Ok(())
99             } else {
100                 Err(from_glib_full(error))
101             }
102         }
103     }
104 }
105 
106 impl fmt::Display for Seekable {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result107     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
108         f.write_str("Seekable")
109     }
110 }
111