1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
// DO NOT EDIT
use crate::DBusInterfaceInfo;
use glib::translate::*;
use std::ptr;
glib::wrapper! {
/// Information about nodes in a remote object hierarchy.
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct DBusNodeInfo(Shared<ffi::GDBusNodeInfo>);
match fn {
ref => |ptr| ffi::g_dbus_node_info_ref(ptr),
unref => |ptr| ffi::g_dbus_node_info_unref(ptr),
type_ => || ffi::g_dbus_node_info_get_type(),
}
}
impl DBusNodeInfo {
/// Parses `xml_data` and returns a [`DBusNodeInfo`][crate::DBusNodeInfo] representing the data.
///
/// The introspection XML must contain exactly one top-level
/// `<node>` element.
///
/// Note that this routine is using a
/// [GMarkup][glib-Simple-XML-Subset-Parser.description]-based
/// parser that only accepts a subset of valid XML documents.
/// ## `xml_data`
/// Valid D-Bus introspection XML.
///
/// # Returns
///
/// A [`DBusNodeInfo`][crate::DBusNodeInfo] structure or [`None`] if `error` is set. Free
/// with `g_dbus_node_info_unref()`.
#[doc(alias = "g_dbus_node_info_new_for_xml")]
#[doc(alias = "new_for_xml")]
pub fn for_xml(xml_data: &str) -> Result<DBusNodeInfo, glib::Error> {
unsafe {
let mut error = ptr::null_mut();
let ret = ffi::g_dbus_node_info_new_for_xml(xml_data.to_glib_none().0, &mut error);
if error.is_null() {
Ok(from_glib_full(ret))
} else {
Err(from_glib_full(error))
}
}
}
//#[doc(alias = "g_dbus_node_info_generate_xml")]
//pub fn generate_xml(&self, indent: u32, string_builder: /*Ignored*/&mut glib::String) {
// unsafe { TODO: call ffi:g_dbus_node_info_generate_xml() }
//}
/// Looks up information about an interface.
///
/// The cost of this function is O(n) in number of interfaces.
/// ## `name`
/// A D-Bus interface name.
///
/// # Returns
///
/// A [`DBusInterfaceInfo`][crate::DBusInterfaceInfo] or [`None`] if not found. Do not free, it is owned by `self`.
#[doc(alias = "g_dbus_node_info_lookup_interface")]
pub fn lookup_interface(&self, name: &str) -> Option<DBusInterfaceInfo> {
unsafe {
from_glib_none(ffi::g_dbus_node_info_lookup_interface(
self.to_glib_none().0,
name.to_glib_none().0,
))
}
}
}