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::object::IsA;
8 use glib::translate::*;
9 use std::fmt;
10 use std::ptr;
11 use Cancellable;
12 
13 glib_wrapper! {
14     pub struct Seekable(Interface<gio_sys::GSeekable>);
15 
16     match fn {
17         get_type => || gio_sys::g_seekable_get_type(),
18     }
19 }
20 
21 pub const NONE_SEEKABLE: Option<&Seekable> = None;
22 
23 pub trait SeekableExt: 'static {
can_seek(&self) -> bool24     fn can_seek(&self) -> bool;
25 
can_truncate(&self) -> bool26     fn can_truncate(&self) -> bool;
27 
seek<P: IsA<Cancellable>>( &self, offset: i64, type_: glib::SeekType, cancellable: Option<&P>, ) -> Result<(), glib::Error>28     fn seek<P: IsA<Cancellable>>(
29         &self,
30         offset: i64,
31         type_: glib::SeekType,
32         cancellable: Option<&P>,
33     ) -> Result<(), glib::Error>;
34 
tell(&self) -> i6435     fn tell(&self) -> i64;
36 
truncate<P: IsA<Cancellable>>( &self, offset: i64, cancellable: Option<&P>, ) -> Result<(), glib::Error>37     fn truncate<P: IsA<Cancellable>>(
38         &self,
39         offset: i64,
40         cancellable: Option<&P>,
41     ) -> Result<(), glib::Error>;
42 }
43 
44 impl<O: IsA<Seekable>> SeekableExt for O {
can_seek(&self) -> bool45     fn can_seek(&self) -> bool {
46         unsafe { from_glib(gio_sys::g_seekable_can_seek(self.as_ref().to_glib_none().0)) }
47     }
48 
can_truncate(&self) -> bool49     fn can_truncate(&self) -> bool {
50         unsafe {
51             from_glib(gio_sys::g_seekable_can_truncate(
52                 self.as_ref().to_glib_none().0,
53             ))
54         }
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 _ = gio_sys::g_seekable_seek(
66                 self.as_ref().to_glib_none().0,
67                 offset,
68                 type_.to_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 { gio_sys::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 _ = gio_sys::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         write!(f, "Seekable")
109     }
110 }
111