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