20 q_dbus_message_iter_append_basic(
it,
type,
arg);
28void QDBusMarshaller::unregisteredTypeError(
QMetaType id)
30 const char *
name =
id.name();
31 qWarning(
"QDBusMarshaller: type '%s' (%d) is not registered with D-Bus. "
32 "Use qDBusRegisterMetaType to register it",
34 error(
"Unregistered type %1 passed in arguments"_L1
103 const char *cdata =
data.constData();
112 error(
"Invalid object path passed in arguments"_L1);
114 const char *cdata =
data.constData();
124 error(
"Invalid signature passed in arguments"_L1);
126 const char *cdata =
data.constData();
134 int fd =
arg.fileDescriptor();
135 if (!
ba &&
fd == -1) {
136 error(
"Invalid file descriptor passed in arguments"_L1);
151 const char* cdata =
arg.constData();
155 q_dbus_message_iter_append_fixed_array(&subiterator,
DBUS_TYPE_BYTE, &cdata,
arg.size());
156 q_dbus_message_iter_close_container(&
iterator, &subiterator);
170 qWarning(
"QDBusMarshaller: cannot add a null QDBusVariant");
171 error(
"Invalid QVariant passed in arguments"_L1);
176 const char *signature =
nullptr;
180 qvariant_cast<QDBusArgument>(
value).currentSignature().toLatin1();
187 unregisteredTypeError(
id);
193 bool isOk =
sub.appendVariantInternal(
value);
223 unregisteredTypeError(
id);
234 unregisteredTypeError(kid);
240 qWarning(
"QDBusMarshaller: type '%s' (%d) cannot be used as the key type in a D-Bus map.",
243 error(
"Type %1 passed in arguments cannot be used as a key in a map"_L1
250 unregisteredTypeError(vid);
256 signature += ksignature;
257 signature += vsignature;
285 sub.skipSignature =
true;
295 q_dbus_message_iter_open_container(&
iterator, code, signature, &
sub.iterator);
302 open(*
d, code, signature);
348 qWarning(
"QDBusMarshaller: cannot add an invalid QVariant");
349 error(
"Invalid QVariant passed in arguments"_L1);
377 unregisteredTypeError(
id);
381 switch (*signature) {
430 append( qvariant_cast<QDBusObjectPath>(
arg) );
433 append( qvariant_cast<QDBusSignature>(
arg) );
439 return append( qvariant_cast<QDBusVariant>(
arg) );
444 switch (
arg.metaType().id()) {
445 case QMetaType::QStringList:
449 case QMetaType::QByteArray:
464 qFatal(
"QDBusMarshaller::appendVariantInternal got a DICT_ENTRY!");
469 append(qvariant_cast<QDBusUnixFileDescriptor>(
arg));
475 qWarning(
"QDBusMarshaller::appendVariantInternal: Found unknown D-Bus type '%s'",
515 q_dbus_message_iter_get_fixed_array(&
sub,&
data,&
len);
517 char signature[2] = { char(element), 0 };
519 q_dbus_message_iter_append_fixed_array(&
sub, element, &
data,
len);
520 q_dbus_message_iter_close_container(&
iterator, &
sub);
531 const char *sig =
nullptr;
537 open(mrecursed, code, sig);
539 while (!drecursed->
atEnd()) {
const char * constData() const noexcept
Returns a pointer to the const data stored in the byte array.
bool isEmpty() const noexcept
Returns true if the byte array has size 0; otherwise returns false.
static QDBusArgument create(QDBusArgumentPrivate *d)
QDBusDemarshaller * demarshaller()
static QDBusArgumentPrivate * d(QDBusArgument &q)
@ UnixFileDescriptorPassing
QDBusDemarshaller * beginCommon()
QString currentSignature()
QDBusMarshaller * endMapEntry()
QDBusMarshaller * endCommon()
QDBusMarshaller * endStructure()
void open(QDBusMarshaller &sub, int code, const char *signature)
QString currentSignature()
bool appendVariantInternal(const QVariant &arg)
QDBusMarshaller * beginMap(QMetaType kid, QMetaType vid)
QDBusMarshaller * endMap()
QDBusMarshaller * beginCommon(int code, const char *signature)
QDBusMarshaller * beginMapEntry()
bool appendRegisteredType(const QVariant &arg)
void error(const QString &message)
QDBusMarshaller * beginStructure()
QDBusMarshaller * beginArray(QMetaType id)
bool appendCrossMarshalling(QDBusDemarshaller *arg)
QDBusMarshaller * endArray()
QObject * parent() const
Returns a pointer to the parent object.
\macro QT_RESTRICTED_CAST_FROM_ASCII
QByteArray toLatin1() const &
static QString fromUtf8(QByteArrayView utf8)
This is an overloaded member function, provided for convenience. It differs from the above function o...
#define DBUS_TYPE_SIGNATURE
#define DBUS_TYPE_BYTE_AS_STRING
#define DBUS_TYPE_OBJECT_PATH
#define DBUS_TYPE_VARIANT
#define DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
#define DBUS_TYPE_UNIX_FD
#define DBUS_TYPE_BOOLEAN
#define DBUS_STRUCT_BEGIN_CHAR
dbus_uint32_t dbus_bool_t
#define DBUS_TYPE_ARRAY_AS_STRING
#define DBUS_TYPE_STRING_AS_STRING
#define DBUS_TYPE_VARIANT_AS_STRING
#define DBUS_TYPE_DICT_ENTRY
#define DBUS_DICT_ENTRY_BEGIN_CHAR
#define DBUS_DICT_ENTRY_END_CHAR_AS_STRING
#define DBUS_STRUCT_END_CHAR
QSet< QString >::iterator it
bool isValidBasicType(int c)
Returns true if c is a valid, basic D-Bus type.
bool isValidFixedType(int c)
Returns true if c is a valid, fixed D-Bus type.
Combined button and popup list for selecting options.
#define QT_WARNING_DISABLE_GCC(text)
DBusConnection const char DBusError * error
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter * sub
static void qIterAppend(DBusMessageIter *it, QByteArray *ba, int type, const void *arg)
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLuint GLsizei const GLchar * message
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data