1use glib::translate::*;
6use gtk_sys;
7use std::ptr;
8
9#[repr(C)]
10pub struct PageRange(gtk_sys::GtkPageRange);
11
12impl PageRange {
13 pub fn new(start: i32, end: i32) -> PageRange {
14 skip_assert_initialized!();
15 PageRange(gtk_sys::GtkPageRange { start, end })
16 }
17
18 pub fn get_start(&self) -> i32 {
19 self.0.start
20 }
21
22 pub fn get_end(&self) -> i32 {
23 self.0.end
24 }
25}
26
27#[doc(hidden)]
28impl ToGlib for PageRange {
29 type GlibType = gtk_sys::GtkPageRange;
30
31 fn to_glib(&self) -> gtk_sys::GtkPageRange {
32 self.0
33 }
34}
35
36#[doc(hidden)]
37impl<'a> ToGlibPtr<'a, *const gtk_sys::GtkPageRange> for PageRange {
38 type Storage = Box<gtk_sys::GtkPageRange>;
39
40 #[inline]
41 fn to_glib_none(&'a self) -> Stash<'a, *const gtk_sys::GtkPageRange, Self> {
42 let page_range = Box::new(self.0);
43 Stash(&*page_range, page_range)
44 }
45}
46
47impl FromGlibContainerAsVec<gtk_sys::GtkPageRange, *mut gtk_sys::GtkPageRange> for PageRange {
48 unsafe fn from_glib_none_num_as_vec(ptr: *mut gtk_sys::GtkPageRange, num: usize) -> Vec<Self> {
49 if num == 0 || ptr.is_null() {
50 return Vec::new();
51 }
52
53 let mut res = Vec::with_capacity(num);
54 for i in 0..num {
55 res.push(PageRange(ptr::read(ptr.offset(i as isize))));
56 }
57 res
58 }
59
60 unsafe fn from_glib_container_num_as_vec(_: *mut gtk_sys::GtkPageRange, _: usize) -> Vec<Self> {
61 unimplemented!();
62 }
63
64 unsafe fn from_glib_full_num_as_vec(_: *mut gtk_sys::GtkPageRange, _: usize) -> Vec<Self> {
65 unimplemented!();
66 }
67}