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