pango/auto/
attr_iterator.rs1use glib::translate::*;
6use pango_sys;
7use std::mem;
8use AttrType;
9use Attribute;
10
11glib_wrapper! {
12 #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
13 pub struct AttrIterator(Boxed<pango_sys::PangoAttrIterator>);
14
15 match fn {
16 copy => |ptr| pango_sys::pango_attr_iterator_copy(mut_override(ptr)),
17 free => |ptr| pango_sys::pango_attr_iterator_destroy(ptr),
18 }
19}
20
21impl AttrIterator {
22 pub fn get(&mut self, type_: AttrType) -> Option<Attribute> {
23 unsafe {
24 from_glib_none(pango_sys::pango_attr_iterator_get(
25 self.to_glib_none_mut().0,
26 type_.to_glib(),
27 ))
28 }
29 }
30
31 pub fn get_attrs(&mut self) -> Vec<Attribute> {
32 unsafe {
33 FromGlibPtrContainer::from_glib_full(pango_sys::pango_attr_iterator_get_attrs(
34 self.to_glib_none_mut().0,
35 ))
36 }
37 }
38
39 pub fn next(&mut self) -> bool {
40 unsafe {
41 from_glib(pango_sys::pango_attr_iterator_next(
42 self.to_glib_none_mut().0,
43 ))
44 }
45 }
46
47 pub fn range(&mut self) -> (i32, i32) {
48 unsafe {
49 let mut start = mem::uninitialized();
50 let mut end = mem::uninitialized();
51 pango_sys::pango_attr_iterator_range(self.to_glib_none_mut().0, &mut start, &mut end);
52 (start, end)
53 }
54 }
55}