use ffi; usesuper::*; usesuper::check; use {Signature, Path, OwnedFd}; use std::{ptr, any, mem}; use std::ffi::CStr; use std::os::raw::{c_void, c_char, c_int};
fn arg_append_basic<T>(i: *mut ffi::DBusMessageIter, arg_type: ArgType, v: T) { let p = &v as *const _ as *const c_void; unsafe {
check("dbus_message_iter_append_basic", ffi::dbus_message_iter_append_basic(i, arg_type as c_int, p));
};
}
fn arg_get_basic<T>(i: *mut ffi::DBusMessageIter, arg_type: ArgType) -> Option<T> { unsafe { letmut c: T = mem::zeroed(); if ffi::dbus_message_iter_get_arg_type(i) != arg_type as c_int { return None };
ffi::dbus_message_iter_get_basic(i, &mut c as *mut _ as *mut c_void);
Some(c)
}
}
fn arg_append_f64(i: *mut ffi::DBusMessageIter, arg_type: ArgType, v: f64) { let p = &v as *const _ as *const c_void; unsafe {
check("dbus_message_iter_append_basic", ffi::dbus_message_iter_append_basic(i, arg_type as c_int, p));
};
}
fn arg_get_f64(i: *mut ffi::DBusMessageIter, arg_type: ArgType) -> Option<f64> { letmut c = 0f64; unsafe { if ffi::dbus_message_iter_get_arg_type(i) != arg_type as c_int { return None };
ffi::dbus_message_iter_get_basic(i, &mut c as *mut _ as *mut c_void);
}
Some(c)
}
fn arg_append_str(i: *mut ffi::DBusMessageIter, arg_type: ArgType, v: &CStr) { let p = v.as_ptr(); let q = &p as *const _ as *const c_void; unsafe {
check("dbus_message_iter_append_basic", ffi::dbus_message_iter_append_basic(i, arg_type as c_int, q));
};
}
unsafefn arg_get_str<'a>(i: *mut ffi::DBusMessageIter, arg_type: ArgType) -> Option<&'a CStr> { if ffi::dbus_message_iter_get_arg_type(i) != arg_type as c_int { return None }; letmut p = ptr::null_mut();
ffi::dbus_message_iter_get_basic(i, &mut p as *mut _ as *mut c_void);
Some(CStr::from_ptr(p as *const c_char))
}
impl DictKey for $t {} unsafeimpl FixedArray for $t {}
}} // End of macro_rules
integer_impl!(u8, Byte, b"y\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64));
integer_impl!(i16, Int16, b"n\0", i, Some(i as i64), _u, None, f, Some(f as f64));
integer_impl!(u16, UInt16, b"q\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64));
integer_impl!(i32, Int32, b"i\0", i, Some(i as i64), _u, None, f, Some(f as f64));
integer_impl!(u32, UInt32, b"u\0", i, Some(i as i64), u, Some(u as u64), f, Some(f as f64));
integer_impl!(i64, Int64, b"x\0", i, Some(i), _u, None, _f, None);
integer_impl!(u64, UInt64, b"t\0", _i, None, u, Some(u as u64), _f, None);
/* /// Note: Will give D-Bus errors in case the CStr is not valid UTF-8. impl<'a>Appendfor&'aCStr{ fnappend(self,i:&mutIterAppend){ arg_append_str(&muti.0,Self::arg_type(),&self) } }
*/
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.