gtk/
page_range.rs

1// Copyright 2013-2018, The Gtk-rs Project Developers.
2// See the COPYRIGHT file at the top-level directory of this distribution.
3// Licensed under the MIT license, see the LICENSE file or <http://opensource.org/licenses/MIT>
4
5use 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}