libxmlb/auto/
query.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from
3// from gir-files (https://github.com/gtk-rs/gir-files.git)
4// DO NOT EDIT
5
6use crate::{ffi, QueryFlags, Silo};
7use glib::{prelude::*, translate::*};
8
9glib::wrapper! {
10    #[doc(alias = "XbQuery")]
11    pub struct Query(Object<ffi::XbQuery, ffi::XbQueryClass>);
12
13    match fn {
14        type_ => || ffi::xb_query_get_type(),
15    }
16}
17
18impl Query {
19    pub const NONE: Option<&'static Query> = None;
20
21    #[doc(alias = "xb_query_new")]
22    pub fn new(silo: &impl IsA<Silo>, xpath: &str) -> Result<Query, glib::Error> {
23        skip_assert_initialized!();
24        unsafe {
25            let mut error = std::ptr::null_mut();
26            let ret = ffi::xb_query_new(
27                silo.as_ref().to_glib_none().0,
28                xpath.to_glib_none().0,
29                &mut error,
30            );
31            if error.is_null() {
32                Ok(from_glib_full(ret))
33            } else {
34                Err(from_glib_full(error))
35            }
36        }
37    }
38
39    #[doc(alias = "xb_query_new_full")]
40    pub fn new_full(
41        silo: &impl IsA<Silo>,
42        xpath: &str,
43        flags: QueryFlags,
44    ) -> Result<Query, glib::Error> {
45        skip_assert_initialized!();
46        unsafe {
47            let mut error = std::ptr::null_mut();
48            let ret = ffi::xb_query_new_full(
49                silo.as_ref().to_glib_none().0,
50                xpath.to_glib_none().0,
51                flags.into_glib(),
52                &mut error,
53            );
54            if error.is_null() {
55                Ok(from_glib_full(ret))
56            } else {
57                Err(from_glib_full(error))
58            }
59        }
60    }
61}
62
63mod sealed {
64    pub trait Sealed {}
65    impl<T: super::IsA<super::Query>> Sealed for T {}
66}
67
68pub trait QueryExt: IsA<Query> + sealed::Sealed + 'static {
69    #[doc(alias = "xb_query_get_xpath")]
70    #[doc(alias = "get_xpath")]
71    fn xpath(&self) -> glib::GString {
72        unsafe { from_glib_none(ffi::xb_query_get_xpath(self.as_ref().to_glib_none().0)) }
73    }
74}
75
76impl<O: IsA<Query>> QueryExt for O {}