15static inline T qIterGet(DBusMessageIter *it)
25 dbus_uint64_t maxValue;
36 q_dbus_message_iter_get_basic(it, &value);
37 q_dbus_message_iter_next(it);
47 char *sig = q_dbus_message_iter_get_signature(&iterator);
48 QString retval = QString::fromUtf8(sig);
56 return qIterGet<uchar>(&iterator);
61 return bool(qIterGet<dbus_bool_t>(&iterator));
66 return qIterGet<dbus_uint16_t>(&iterator);
71 return qIterGet<dbus_int16_t>(&iterator);
76 return qIterGet<dbus_int32_t>(&iterator);
81 return qIterGet<dbus_uint32_t>(&iterator);
86 return qIterGet<qlonglong>(&iterator);
91 return qIterGet<qulonglong>(&iterator);
96 return qIterGet<
double>(&iterator);
101 return QString::fromUtf8(qIterGet<
char *>(&iterator));
107 return toStringUnchecked();
114 return QDBusObjectPath(QString::fromUtf8(qIterGet<
char *>(&iterator)));
120 return toObjectPathUnchecked();
122 return QDBusObjectPath();
127 return QDBusSignature(QString::fromUtf8(qIterGet<
char *>(&iterator)));
133 return toSignatureUnchecked();
135 return QDBusSignature();
140 QDBusUnixFileDescriptor fd;
141 fd.giveFileDescriptor(qIterGet<dbus_int32_t>(&iterator));
148 sub.message = q_dbus_message_ref(message);
149 q_dbus_message_iter_recurse(&iterator, &sub.iterator);
150 q_dbus_message_iter_next(&iterator);
152 return QDBusVariant( sub.toVariantInternal() );
157 switch (q_dbus_message_iter_get_arg_type(&iterator)) {
170 return QDBusArgument::BasicType;
173 return QDBusArgument::VariantType;
176 switch (q_dbus_message_iter_get_element_type(&iterator)) {
180 return QDBusArgument::BasicType;
182 return QDBusArgument::MapType;
184 return QDBusArgument::ArrayType;
188 return QDBusArgument::StructureType;
190 return QDBusArgument::MapEntryType;
193 return capabilities & QDBusConnection::UnixFileDescriptorPassing ?
194 QDBusArgument::BasicType : QDBusArgument::UnknownType;
197 return QDBusArgument::UnknownType;
204 return QDBusArgument::UnknownType;
209 switch (q_dbus_message_iter_get_arg_type(&iterator)) {
211 return QVariant::fromValue(toByte());
213 return QVariant::fromValue(toShort());
215 return QVariant::fromValue(toUShort());
227 return toULongLong();
229 return toStringUnchecked();
231 return QVariant::fromValue(toObjectPathUnchecked());
233 return QVariant::fromValue(toSignatureUnchecked());
235 return QVariant::fromValue(toVariant());
238 switch (q_dbus_message_iter_get_element_type(&iterator)) {
241 return toByteArrayUnchecked();
243 return toStringListUnchecked();
245 return QVariant::fromValue(duplicate());
248 return QVariant::fromValue(duplicate());
252 return QVariant::fromValue(duplicate());
255 if (capabilities & QDBusConnection::UnixFileDescriptorPassing)
256 return QVariant::fromValue(toUnixFileDescriptor());
264 ptr += q_dbus_message_iter_get_arg_type(&iterator);
265 q_dbus_message_iter_next(&iterator);
268 return QVariant::fromValue<
void *>(ptr);
274 const int type = q_dbus_message_iter_get_arg_type(&iterator);
290 q_dbus_message_iter_recurse(&iterator, &sub.iterator);
291 q_dbus_message_iter_next(&iterator);
293 list.append(sub.toStringUnchecked());
302 return toStringListUnchecked();
304 return QStringList();
310 q_dbus_message_iter_recurse(&iterator, &sub);
311 q_dbus_message_iter_next(&iterator);
314 q_dbus_message_iter_get_fixed_array(&sub,&data,&len);
315 return QByteArray(data,len);
321 && q_dbus_message_iter_get_element_type(&iterator) ==
DBUS_TYPE_BYTE) {
322 return toByteArrayUnchecked();
357 d->message = q_dbus_message_ref(message);
360 q_dbus_message_iter_recurse(&iterator, &d->iterator);
361 q_dbus_message_iter_next(&iterator);
394 std::unique_ptr<QDBusDemarshaller> d(
new QDBusDemarshaller(capabilities));
395 d->iterator = iterator;
396 d->message = q_dbus_message_ref(message);
398 q_dbus_message_iter_next(&iterator);
399 return QDBusArgumentPrivate::create(d.release());
bool isCurrentTypeStringLike()
QDBusDemarshaller * beginArray()
QDBusArgument duplicate()
QDBusDemarshaller * endArray()
QDBusDemarshaller * endStructure()
QDBusDemarshaller * endMapEntry()
QDBusSignature toSignature()
QDBusUnixFileDescriptor toUnixFileDescriptor()
QDBusObjectPath toObjectPath()
QDBusDemarshaller * beginStructure()
QDBusDemarshaller * endCommon()
QVariant toVariantInternal()
QDBusDemarshaller * beginMapEntry()
QDBusDemarshaller * beginCommon()
QString currentSignature()
QDBusDemarshaller * endMap()
QDBusDemarshaller * beginMap()
QStringList toStringList()
QDBusDemarshaller * parent
QDBusArgument::ElementType currentType()
#define DBUS_TYPE_SIGNATURE
#define DBUS_TYPE_OBJECT_PATH
#define DBUS_TYPE_VARIANT
#define DBUS_TYPE_UNIX_FD
#define DBUS_TYPE_BOOLEAN
#define DBUS_TYPE_INVALID
#define DBUS_TYPE_DICT_ENTRY