bool dsme_dbus_message_get_variant_bool(const DsmeDbusMessage* msg) { // FIXME: caller can't tell apart FALSE from error dbus_bool_t b = FALSE; if( msg ) { DBusMessageIter *iter = (DBusMessageIter *)&msg->iter; DBusMessageIter subiter; if( dsme_dbus_check_arg_type(iter, DBUS_TYPE_VARIANT) ) { dbus_message_iter_recurse (iter, &subiter); if( dsme_dbus_check_arg_type(&subiter, DBUS_TYPE_BOOLEAN) ) { dbus_message_iter_get_basic(&subiter, &b); } } dbus_message_iter_next(iter); } return b; }
bool dsme_dbus_message_get_bool(const DsmeDbusMessage* msg) { // FIXME: caller can't tell apart FALSE from error dbus_bool_t b = FALSE; if (msg) { // FIXME: why take const pointer if we're going to modify the content? DBusMessageIter *iter = (DBusMessageIter *)&msg->iter; if( dsme_dbus_check_arg_type(iter, DBUS_TYPE_BOOLEAN) ) { dbus_message_iter_get_basic(iter, &b); } dbus_message_iter_next(iter); } return b; }
const char* dsme_dbus_message_get_string(const DsmeDbusMessage* msg) { // FIXME: caller can't tell apart empty string from error const char* s = ""; if (msg) { // FIXME: why take const pointer if we're going to modify the content? DBusMessageIter *iter = (DBusMessageIter *)&msg->iter; if( dsme_dbus_check_arg_type(iter, DBUS_TYPE_STRING) ) { dbus_message_iter_get_basic(iter, &s); } dbus_message_iter_next(iter); } return s; }
int dsme_dbus_message_get_int(const DsmeDbusMessage* msg) { // FIXME: caller can't tell apart zero from error dbus_int32_t i = 0; if (msg) { // FIXME: why take const pointer if we're going to modify the content? DBusMessageIter *iter = (DBusMessageIter *)&msg->iter; if( dsme_dbus_check_arg_type(iter, DBUS_TYPE_INT32) ) { dbus_message_iter_get_basic(iter, &i); } dbus_message_iter_next(iter); } return i; }