inline QDBusVariant QDBusDemarshaller::toVariant() { QDBusDemarshaller sub; sub.message = q_dbus_message_ref(message); q_dbus_message_iter_recurse(&iterator, &sub.iterator); q_dbus_message_iter_next(&iterator); return QDBusVariant( sub.toVariantInternal() ); }
/*! \internal Constructs a QDBusMessage by parsing the given DBusMessage object. */ QDBusMessage QDBusMessagePrivate::fromDBusMessage(DBusMessage *dmsg) { QDBusMessage message; if (!dmsg) return message; message.d_ptr->type = q_dbus_message_get_type(dmsg); message.d_ptr->path = QString::fromUtf8(q_dbus_message_get_path(dmsg)); message.d_ptr->interface = QString::fromUtf8(q_dbus_message_get_interface(dmsg)); message.d_ptr->name = message.d_ptr->type == DBUS_MESSAGE_TYPE_ERROR ? QString::fromUtf8(q_dbus_message_get_error_name(dmsg)) : QString::fromUtf8(q_dbus_message_get_member(dmsg)); message.d_ptr->service = QString::fromUtf8(q_dbus_message_get_sender(dmsg)); message.d_ptr->signature = QString::fromUtf8(q_dbus_message_get_signature(dmsg)); message.d_ptr->msg = q_dbus_message_ref(dmsg); QDBusDemarshaller demarshaller; demarshaller.message = q_dbus_message_ref(dmsg); if (q_dbus_message_iter_init(demarshaller.message, &demarshaller.iterator)) while (!demarshaller.atEnd()) message << demarshaller.toVariantInternal(); return message; }