summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2020-09-09 13:42:35 +0200
committerLars Knoll <lars.knoll@qt.io>2020-09-23 19:30:28 +0200
commit850d850c5af8ff77a4b9d53457ec6b1ba6c20cb3 (patch)
tree79af5853f71ca977c4e24eab609c0f07dcb04a7a /src
parentbe714154fa3f9dd7f1a44952293eee037793e383 (diff)
Use QMetaType instead of integer based type ids
Change the implementation of Qt DBus to use QMetaType directly instead of integer based type ids. Change-Id: I999023b58fa50dcc3504386467faf09874f7d2cf Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src')
-rw-r--r--src/dbus/qdbusabstractadaptor.cpp2
-rw-r--r--src/dbus/qdbusabstractinterface.cpp14
-rw-r--r--src/dbus/qdbusargument.cpp8
-rw-r--r--src/dbus/qdbusargument.h29
-rw-r--r--src/dbus/qdbusargument_p.h4
-rw-r--r--src/dbus/qdbusconnection_p.h13
-rw-r--r--src/dbus/qdbusintegrator.cpp38
-rw-r--r--src/dbus/qdbusintegrator_p.h6
-rw-r--r--src/dbus/qdbusinterface.cpp12
-rw-r--r--src/dbus/qdbusinternalfilters.cpp16
-rw-r--r--src/dbus/qdbusmarshaller.cpp46
-rw-r--r--src/dbus/qdbusmessage.cpp6
-rw-r--r--src/dbus/qdbusmessage.h3
-rw-r--r--src/dbus/qdbusmetaobject.cpp4
-rw-r--r--src/dbus/qdbusmetatype.cpp4
-rw-r--r--src/dbus/qdbusmetatype.h4
-rw-r--r--src/dbus/qdbusmetatype_p.h42
-rw-r--r--src/dbus/qdbusmisc.cpp16
-rw-r--r--src/dbus/qdbuspendingcall.cpp8
-rw-r--r--src/dbus/qdbuspendingcall_p.h4
-rw-r--r--src/dbus/qdbuspendingreply.cpp2
-rw-r--r--src/dbus/qdbuspendingreply.h4
-rw-r--r--src/dbus/qdbusreply.cpp10
-rw-r--r--src/dbus/qdbusutil.cpp12
-rw-r--r--src/dbus/qdbusxmlgenerator.cpp24
-rw-r--r--src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp16
-rw-r--r--src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp2
27 files changed, 169 insertions, 180 deletions
diff --git a/src/dbus/qdbusabstractadaptor.cpp b/src/dbus/qdbusabstractadaptor.cpp
index 0d59efe145..4f749b0f9d 100644
--- a/src/dbus/qdbusabstractadaptor.cpp
+++ b/src/dbus/qdbusabstractadaptor.cpp
@@ -305,7 +305,7 @@ void QDBusAdaptorConnector::relay(QObject *senderObj, int lastSignalIdx, void **
realObject = realObject->parent();
// break down the parameter list
- QList<int> types;
+ QList<QMetaType> types;
QString errorMsg;
int inputCount = qDBusParametersForMethod(mm, types, errorMsg);
if (inputCount == -1) {
diff --git a/src/dbus/qdbusabstractinterface.cpp b/src/dbus/qdbusabstractinterface.cpp
index 4c580ed676..0a873ad5ad 100644
--- a/src/dbus/qdbusabstractinterface.cpp
+++ b/src/dbus/qdbusabstractinterface.cpp
@@ -154,10 +154,10 @@ bool QDBusAbstractInterfacePrivate::property(const QMetaProperty &mp, void *retu
if (!isValid || !canMakeCalls()) // can't make calls
return false;
- const int type = mp.userType();
+ QMetaType type = mp.metaType();
// is this metatype registered?
const char *expectedSignature = "";
- if (int(mp.userType()) != QMetaType::QVariant) {
+ if (type.id() != QMetaType::QVariant) {
expectedSignature = QDBusMetaType::typeToSignature(type);
if (expectedSignature == nullptr) {
qWarning("QDBusAbstractInterface: type %s must be registered with Qt D-Bus before it can be "
@@ -193,10 +193,10 @@ bool QDBusAbstractInterfacePrivate::property(const QMetaProperty &mp, void *retu
const char *foundType = nullptr;
QVariant value = qvariant_cast<QDBusVariant>(reply.arguments().at(0)).variant();
- if (value.userType() == type || type == QMetaType::QVariant
+ if (value.metaType() == type || type.id() == QMetaType::QVariant
|| (expectedSignature[0] == 'v' && expectedSignature[1] == '\0')) {
// simple match
- if (type == QMetaType::QVariant) {
+ if (type.id() == QMetaType::QVariant) {
*reinterpret_cast<QVariant*>(returnValuePtr) = value;
} else {
QMetaType(type).destruct(returnValuePtr);
@@ -205,7 +205,7 @@ bool QDBusAbstractInterfacePrivate::property(const QMetaProperty &mp, void *retu
return true;
}
- if (value.userType() == qMetaTypeId<QDBusArgument>()) {
+ if (value.metaType() == QMetaType::fromType<QDBusArgument>()) {
QDBusArgument arg = qvariant_cast<QDBusArgument>(value);
foundType = "user type";
@@ -216,7 +216,7 @@ bool QDBusAbstractInterfacePrivate::property(const QMetaProperty &mp, void *retu
}
} else {
foundType = value.typeName();
- foundSignature = QDBusMetaType::typeToSignature(value.userType());
+ foundSignature = QDBusMetaType::typeToSignature(value.metaType());
}
// there was an error...
@@ -281,7 +281,7 @@ int QDBusAbstractInterfaceBase::qt_metacall(QMetaObject::Call _c, int _id, void
if (_c == QMetaObject::WriteProperty) {
QVariant value;
- if (mp.userType() == qMetaTypeId<QDBusVariant>())
+ if (mp.metaType() == QMetaType::fromType<QDBusVariant>())
value = reinterpret_cast<const QDBusVariant*>(_a[0])->variant();
else
value = QVariant(mp.metaType(), _a[0]);
diff --git a/src/dbus/qdbusargument.cpp b/src/dbus/qdbusargument.cpp
index 840a6d9673..10baa5d907 100644
--- a/src/dbus/qdbusargument.cpp
+++ b/src/dbus/qdbusargument.cpp
@@ -96,7 +96,7 @@ QByteArray QDBusArgumentPrivate::createSignature(int id)
"(Did you forget to call beginStructure() ?)",
QMetaType(id).name(),
signature.constData(),
- QMetaType(QDBusMetaType::signatureToType(signature)).name());
+ QDBusMetaType::signatureToMetaType(signature).name());
return "";
}
return signature;
@@ -879,7 +879,7 @@ void QDBusArgument::endStructure()
\sa endArray(), beginStructure(), beginMap()
*/
-void QDBusArgument::beginArray(int id)
+void QDBusArgument::beginArray(QMetaType id)
{
if (QDBusArgumentPrivate::checkWrite(d))
d = d->marshaller()->beginArray(id);
@@ -916,10 +916,10 @@ void QDBusArgument::endArray()
\sa endMap(), beginStructure(), beginArray(), beginMapEntry()
*/
-void QDBusArgument::beginMap(int kid, int vid)
+void QDBusArgument::beginMap(QMetaType keyMetaType, QMetaType valueMetaType)
{
if (QDBusArgumentPrivate::checkWrite(d))
- d = d->marshaller()->beginMap(kid, vid);
+ d = d->marshaller()->beginMap(keyMetaType, valueMetaType);
}
/*!
diff --git a/src/dbus/qdbusargument.h b/src/dbus/qdbusargument.h
index 721ac41b3c..cf09543912 100644
--- a/src/dbus/qdbusargument.h
+++ b/src/dbus/qdbusargument.h
@@ -103,9 +103,13 @@ public:
void beginStructure();
void endStructure();
- void beginArray(int elementMetaTypeId);
+ void beginArray(int elementMetaTypeId)
+ { beginArray(QMetaType(elementMetaTypeId)); }
+ void beginArray(QMetaType elementMetaType);
void endArray();
- void beginMap(int keyMetaTypeId, int valueMetaTypeId);
+ void beginMap(int keyMetaTypeId, int valueMetaTypeId)
+ { beginMap(QMetaType(keyMetaTypeId), QMetaType(valueMetaTypeId)); }
+ void beginMap(QMetaType keyMetaType, QMetaType valueMetaType);
void endMap();
void beginMapEntry();
void endMapEntry();
@@ -165,8 +169,7 @@ template<typename T> inline T qdbus_cast(const QDBusArgument &arg)
template<typename T> inline T qdbus_cast(const QVariant &v)
{
- int id = v.userType();
- if (id == qMetaTypeId<QDBusArgument>())
+ if (v.metaType() == QMetaType::fromType<QDBusArgument>())
return qdbus_cast<T>(qvariant_cast<QDBusArgument>(v));
else
return qvariant_cast<T>(v);
@@ -227,8 +230,7 @@ template<template <typename> class Container, typename T,
typename = typename Container<T>::iterator>
inline QDBusArgument &operator<<(QDBusArgument &arg, const Container<T> &list)
{
- int id = qMetaTypeId<T>();
- arg.beginArray(id);
+ arg.beginArray(QMetaType::fromType<T>());
typename Container<T>::const_iterator it = list.begin();
typename Container<T>::const_iterator end = list.end();
for ( ; it != end; ++it)
@@ -255,8 +257,7 @@ inline const QDBusArgument &operator>>(const QDBusArgument &arg, Container<T> &l
inline QDBusArgument &operator<<(QDBusArgument &arg, const QVariantList &list)
{
- int id = qMetaTypeId<QDBusVariant>();
- arg.beginArray(id);
+ arg.beginArray(QMetaType::fromType<QDBusVariant>());
QVariantList::ConstIterator it = list.constBegin();
QVariantList::ConstIterator end = list.constEnd();
for ( ; it != end; ++it)
@@ -270,9 +271,7 @@ template <template <typename, typename> class Container, typename Key, typename
QtPrivate::IfAssociativeIteratorHasKeyAndValue<typename Container<Key, T>::iterator> = true>
inline QDBusArgument &operator<<(QDBusArgument &arg, const Container<Key, T> &map)
{
- int kid = qMetaTypeId<Key>();
- int vid = qMetaTypeId<T>();
- arg.beginMap(kid, vid);
+ arg.beginMap(QMetaType::fromType<Key>(), QMetaType::fromType<T>());
auto it = map.begin();
auto end = map.end();
for ( ; it != end; ++it) {
@@ -288,9 +287,7 @@ template <template <typename, typename> class Container, typename Key, typename
QtPrivate::IfAssociativeIteratorHasFirstAndSecond<typename Container<Key, T>::iterator> = true>
inline QDBusArgument &operator<<(QDBusArgument &arg, const Container<Key, T> &map)
{
- int kid = qMetaTypeId<Key>();
- int vid = qMetaTypeId<T>();
- arg.beginMap(kid, vid);
+ arg.beginMap(QMetaType::fromType<Key>(), QMetaType::fromType<T>());
auto it = map.begin();
auto end = map.end();
for ( ; it != end; ++it) {
@@ -322,7 +319,7 @@ inline const QDBusArgument &operator>>(const QDBusArgument &arg, Container<Key,
inline QDBusArgument &operator<<(QDBusArgument &arg, const QVariantMap &map)
{
- arg.beginMap(QMetaType::QString, qMetaTypeId<QDBusVariant>());
+ arg.beginMap(QMetaType::fromType<QString>(), QMetaType::fromType<QDBusVariant>());
QVariantMap::ConstIterator it = map.constBegin();
QVariantMap::ConstIterator end = map.constEnd();
for ( ; it != end; ++it) {
@@ -336,7 +333,7 @@ inline QDBusArgument &operator<<(QDBusArgument &arg, const QVariantMap &map)
inline QDBusArgument &operator<<(QDBusArgument &arg, const QVariantHash &map)
{
- arg.beginMap(QMetaType::QString, qMetaTypeId<QDBusVariant>());
+ arg.beginMap(QMetaType::fromType<QString>(), QMetaType::fromType<QDBusVariant>());
QVariantHash::ConstIterator it = map.constBegin();
QVariantHash::ConstIterator end = map.constEnd();
for ( ; it != end; ++it) {
diff --git a/src/dbus/qdbusargument_p.h b/src/dbus/qdbusargument_p.h
index 3553d3d151..5cc3ca7da2 100644
--- a/src/dbus/qdbusargument_p.h
+++ b/src/dbus/qdbusargument_p.h
@@ -129,9 +129,9 @@ public:
QDBusMarshaller *beginStructure();
QDBusMarshaller *endStructure();
- QDBusMarshaller *beginArray(int id);
+ QDBusMarshaller *beginArray(QMetaType id);
QDBusMarshaller *endArray();
- QDBusMarshaller *beginMap(int kid, int vid);
+ QDBusMarshaller *beginMap(QMetaType kid, QMetaType vid);
QDBusMarshaller *endMap();
QDBusMarshaller *beginMapEntry();
QDBusMarshaller *endMapEntry();
diff --git a/src/dbus/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h
index 84c5aee3d7..b8a1b7bbfd 100644
--- a/src/dbus/qdbusconnection_p.h
+++ b/src/dbus/qdbusconnection_p.h
@@ -137,7 +137,7 @@ public:
QString service, path, signature;
QObject* obj;
int midx;
- QList<int> params;
+ QList<QMetaType> params;
ArgMatchRules argumentMatch;
QByteArray matchRule;
};
@@ -264,7 +264,7 @@ private:
void sendInternal(QDBusPendingCallPrivate *pcall, void *msg, int timeout);
void sendError(const QDBusMessage &msg, QDBusError::ErrorType code);
void deliverCall(QObject *object, int flags, const QDBusMessage &msg,
- const QList<int> &metaTypes, int slotIdx);
+ const QList<QMetaType> &metaTypes, int slotIdx);
SignalHookHash::Iterator removeSignalHookNoLock(SignalHookHash::Iterator it);
void collectAllObjects(ObjectTreeNode &node, QSet<QObject *> &set);
@@ -352,7 +352,7 @@ public:
public:
// static methods
- static int findSlot(QObject *obj, const QByteArray &normalizedName, QList<int> &params);
+ static int findSlot(QObject *obj, const QByteArray &normalizedName, QList<QMetaType> &params);
static bool prepareHook(QDBusConnectionPrivate::SignalHook &hook, QString &key,
const QString &service,
const QString &path, const QString &interface, const QString &name,
@@ -361,7 +361,7 @@ public:
bool buildSignature);
static DBusHandlerResult messageFilter(DBusConnection *, DBusMessage *, void *);
static QDBusCallDeliveryEvent *prepareReply(QDBusConnectionPrivate *target, QObject *object,
- int idx, const QList<int> &metaTypes,
+ int idx, const QList<QMetaType> &metaTypes,
const QDBusMessage &msg);
static void processFinishedCall(QDBusPendingCallPrivate *call);
@@ -374,11 +374,10 @@ public:
};
// in qdbusmisc.cpp
-extern int qDBusParametersForMethod(const QMetaMethod &mm, QList<int> &metaTypes,
- QString &errorMsg);
+extern int qDBusParametersForMethod(const QMetaMethod &mm, QList<QMetaType> &metaTypes, QString &errorMsg);
# endif // QT_BOOTSTRAPPED
extern Q_DBUS_EXPORT int qDBusParametersForMethod(const QList<QByteArray> &parameters,
- QList<int> &metaTypes, QString &errorMsg);
+ QList<QMetaType> &metaTypes, QString &errorMsg);
extern Q_DBUS_EXPORT bool qDBusCheckAsyncTag(const char *tag);
#ifndef QT_BOOTSTRAPPED
extern bool qDBusInterfaceInObject(QObject *obj, const QString &interface_name);
diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index e177583bfa..96f2244e0c 100644
--- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp
@@ -668,7 +668,7 @@ static void huntAndEmit(DBusConnection *connection, DBusMessage *msg,
}
static int findSlot(const QMetaObject *mo, const QByteArray &name, int flags,
- const QString &signature_, QList<int> &metaTypes)
+ const QString &signature_, QList<QMetaType> &metaTypes)
{
QByteArray msgSignature = signature_.toLatin1();
@@ -687,12 +687,12 @@ static int findSlot(const QMetaObject *mo, const QByteArray &name, int flags,
if (mm.name() != name)
continue;
- int returnType = mm.returnType();
+ QMetaType returnType = mm.returnMetaType();
bool isAsync = qDBusCheckAsyncTag(mm.tag());
bool isScriptable = mm.attributes() & QMetaMethod::Scriptable;
// consistency check:
- if (isAsync && returnType != QMetaType::Void)
+ if (isAsync && returnType.id() != QMetaType::Void)
continue;
QString errorMsg;
@@ -729,7 +729,7 @@ static int findSlot(const QMetaObject *mo, const QByteArray &name, int flags,
++i;
// make sure that the output parameters have signatures too
- if (returnType != QMetaType::UnknownType && returnType != QMetaType::Void && QDBusMetaType::typeToSignature(returnType) == nullptr)
+ if (returnType.isValid() && returnType.id() != QMetaType::Void && QDBusMetaType::typeToSignature(returnType) == nullptr)
continue;
bool ok = true;
@@ -781,7 +781,7 @@ static QDBusCallDeliveryEvent * const DIRECT_DELIVERY = (QDBusCallDeliveryEvent
QDBusCallDeliveryEvent *QDBusConnectionPrivate::prepareReply(QDBusConnectionPrivate *target,
QObject *object, int idx,
- const QList<int> &metaTypes,
+ const QList<QMetaType> &metaTypes,
const QDBusMessage &msg)
{
Q_ASSERT(object);
@@ -796,8 +796,8 @@ QDBusCallDeliveryEvent *QDBusConnectionPrivate::prepareReply(QDBusConnectionPriv
// check that types match
for (int i = 0; i < n; ++i)
- if (metaTypes.at(i + 1) != msg.arguments().at(i).userType() &&
- msg.arguments().at(i).userType() != qMetaTypeId<QDBusArgument>())
+ if (metaTypes.at(i + 1) != msg.arguments().at(i).metaType() &&
+ msg.arguments().at(i).metaType() != QMetaType::fromType<QDBusArgument>())
return nullptr; // no match
// we can deliver
@@ -917,7 +917,7 @@ bool QDBusConnectionPrivate::activateCall(QObject* object, int flags, const QDBu
}
void QDBusConnectionPrivate::deliverCall(QObject *object, int /*flags*/, const QDBusMessage &msg,
- const QList<int> &metaTypes, int slotIdx)
+ const QList<QMetaType> &metaTypes, int slotIdx)
{
Q_ASSERT_X(!object || QThread::currentThread() == object->thread(),
"QDBusConnection: internal threading error",
@@ -936,15 +936,15 @@ void QDBusConnectionPrivate::deliverCall(QObject *object, int /*flags*/, const Q
int i;
int pCount = qMin(msg.arguments().count(), metaTypes.count() - 1);
for (i = 1; i <= pCount; ++i) {
- int id = metaTypes[i];
+ auto id = metaTypes[i];
if (id == QDBusMetaTypeId::message())
break;
const QVariant &arg = msg.arguments().at(i - 1);
- if (arg.userType() == id)
+ if (arg.metaType() == id)
// no conversion needed
params.append(const_cast<void *>(arg.constData()));
- else if (arg.userType() == qMetaTypeId<QDBusArgument>()) {
+ else if (arg.metaType() == QMetaType::fromType<QDBusArgument>()) {
// convert to what the function expects
auxParameters.append(QVariant(QMetaType(id)));
@@ -954,14 +954,14 @@ void QDBusConnectionPrivate::deliverCall(QObject *object, int /*flags*/, const Q
if (Q_UNLIKELY(!QDBusMetaType::demarshall(in, out.metaType(), out.data())))
qFatal("Internal error: demarshalling function for type '%s' (%d) failed!",
- out.typeName(), out.userType());
+ out.typeName(), out.metaType().id());
params.append(const_cast<void *>(out.constData()));
} else {
qFatal("Internal error: got invalid meta type %d (%s) "
"when trying to convert to meta type %d (%s)",
- arg.userType(), arg.metaType().name(),
- id, QMetaType(id).name());
+ arg.metaType().id(), arg.metaType().name(),
+ id.id(), id.name());
}
}
@@ -973,7 +973,7 @@ void QDBusConnectionPrivate::deliverCall(QObject *object, int /*flags*/, const Q
// output arguments
const int numMetaTypes = metaTypes.count();
QVariantList outputArgs;
- if (metaTypes[0] != QMetaType::Void && metaTypes[0] != QMetaType::UnknownType) {
+ if (metaTypes[0].id() != QMetaType::Void && metaTypes[0].isValid()) {
outputArgs.reserve(numMetaTypes - i + 1);
QVariant arg{QMetaType(metaTypes[0])};
outputArgs.append( arg );
@@ -1315,7 +1315,7 @@ void QDBusConnectionPrivate::serviceOwnerChangedNoLock(const QString &name,
}
int QDBusConnectionPrivate::findSlot(QObject *obj, const QByteArray &normalizedName,
- QList<int> &params)
+ QList<QMetaType> &params)
{
int midx = obj->metaObject()->indexOfMethod(normalizedName);
if (midx == -1)
@@ -1703,7 +1703,7 @@ void QDBusConnectionPrivate::watchForDBusDisconnection()
hook.service.clear(); // org.freedesktop.DBus.Local.Disconnected uses empty service name
hook.path = QDBusUtil::dbusPathLocal();
hook.obj = this;
- hook.params << QMetaType::Void;
+ hook.params << QMetaType(QMetaType::Void);
hook.midx = staticMetaObject.indexOfSlot("handleDBusDisconnection()");
Q_ASSERT(hook.midx != -1);
signalHooks.insert(QLatin1String("Disconnected:" DBUS_INTERFACE_LOCAL), hook);
@@ -1840,7 +1840,7 @@ void QDBusConnectionPrivate::setConnection(DBusConnection *dbc, const QDBusError
hook.service = QDBusUtil::dbusService();
hook.path.clear(); // no matching
hook.obj = this;
- hook.params << QMetaType::Void << QMetaType::QString; // both functions take a QString as parameter and return void
+ hook.params << QMetaType(QMetaType::Void) << QMetaType(QMetaType::QString); // both functions take a QString as parameter and return void
hook.midx = staticMetaObject.indexOfSlot("registerServiceNoLock(QString)");
Q_ASSERT(hook.midx != -1);
@@ -1854,7 +1854,7 @@ void QDBusConnectionPrivate::setConnection(DBusConnection *dbc, const QDBusError
// we don't use connectSignal here because the rules are added by connectSignal on a per-need basis
hook.params.clear();
hook.params.reserve(4);
- hook.params << QMetaType::Void << QMetaType::QString << QMetaType::QString << QMetaType::QString;
+ hook.params << QMetaType(QMetaType::Void) << QMetaType(QMetaType::QString) << QMetaType(QMetaType::QString) << QMetaType(QMetaType::QString);
hook.midx = staticMetaObject.indexOfSlot("serviceOwnerChangedNoLock(QString,QString,QString)");
Q_ASSERT(hook.midx != -1);
signalHooks.insert(QLatin1String("NameOwnerChanged:" DBUS_INTERFACE_DBUS), hook);
diff --git a/src/dbus/qdbusintegrator_p.h b/src/dbus/qdbusintegrator_p.h
index be6efa4027..3a459251f7 100644
--- a/src/dbus/qdbusintegrator_p.h
+++ b/src/dbus/qdbusintegrator_p.h
@@ -84,7 +84,7 @@ struct QDBusSlotCache
{
int flags;
int slotIdx;
- QList<int> metaTypes;
+ QList<QMetaType> metaTypes;
void swap(Data &other) noexcept
{
@@ -105,7 +105,7 @@ class QDBusCallDeliveryEvent: public QAbstractMetaCallEvent
{
public:
QDBusCallDeliveryEvent(const QDBusConnection &c, int id, QObject *sender,
- const QDBusMessage &msg, const QList<int> &types, int f = 0)
+ const QDBusMessage &msg, const QList<QMetaType> &types, int f = 0)
: QAbstractMetaCallEvent(sender, -1),
connection(c),
message(msg),
@@ -123,7 +123,7 @@ public:
private:
QDBusConnection connection; // just for refcounting
QDBusMessage message;
- QList<int> metaTypes;
+ QList<QMetaType> metaTypes;
int id;
int flags;
};
diff --git a/src/dbus/qdbusinterface.cpp b/src/dbus/qdbusinterface.cpp
index e80dbdf0e0..3d6cf6c1f2 100644
--- a/src/dbus/qdbusinterface.cpp
+++ b/src/dbus/qdbusinterface.cpp
@@ -53,7 +53,7 @@ QT_BEGIN_NAMESPACE
static void copyArgument(void *to, int id, const QVariant &arg)
{
- if (id == arg.userType()) {
+ if (id == arg.metaType().id()) {
switch (id) {
case QMetaType::Bool:
*reinterpret_cast<bool *>(to) = arg.toBool();
@@ -104,13 +104,13 @@ static void copyArgument(void *to, int id, const QVariant &arg)
return;
}
- if (id == QDBusMetaTypeId::variant()) {
+ if (id == QDBusMetaTypeId::variant().id()) {
*reinterpret_cast<QDBusVariant *>(to) = qvariant_cast<QDBusVariant>(arg);
return;
- } else if (id == QDBusMetaTypeId::objectpath()) {
+ } else if (id == QDBusMetaTypeId::objectpath().id()) {
*reinterpret_cast<QDBusObjectPath *>(to) = qvariant_cast<QDBusObjectPath>(arg);
return;
- } else if (id == QDBusMetaTypeId::signature()) {
+ } else if (id == QDBusMetaTypeId::signature().id()) {
*reinterpret_cast<QDBusSignature *>(to) = qvariant_cast<QDBusSignature>(arg);
return;
}
@@ -121,14 +121,14 @@ static void copyArgument(void *to, int id, const QVariant &arg)
}
// if we got here, it's either an un-dermarshalled type or a mismatch
- if (arg.userType() != QDBusMetaTypeId::argument()) {
+ if (arg.metaType() != QDBusMetaTypeId::argument()) {
// it's a mismatch
//qWarning?
return;
}
// is this type registered?
- const char *userSignature = QDBusMetaType::typeToSignature(id);
+ const char *userSignature = QDBusMetaType::typeToSignature(QMetaType(id));
if (!userSignature || !*userSignature) {
// type not registered
//qWarning?
diff --git a/src/dbus/qdbusinternalfilters.cpp b/src/dbus/qdbusinternalfilters.cpp
index 7b99cbd917..4d8d4ca254 100644
--- a/src/dbus/qdbusinternalfilters.cpp
+++ b/src/dbus/qdbusinternalfilters.cpp
@@ -348,28 +348,28 @@ static int writeProperty(QObject *obj, const QByteArray &property_name, QVariant
// we found our property
// do we have the right type?
- int id = mp.userType();
- if (!id){
+ QMetaType id = mp.metaType();
+ if (!id.isValid()){
// type not registered or invalid / void?
qWarning("QDBusConnection: Unable to handle unregistered datatype '%s' for property '%s::%s'",
mp.typeName(), mo->className(), property_name.constData());
return PropertyWriteFailed;
}
- if (id != QMetaType::QVariant && value.userType() == QDBusMetaTypeId::argument()) {
+ if (id.id() != QMetaType::QVariant && value.metaType() == QDBusMetaTypeId::argument()) {
// we have to demarshall before writing
QVariant other{QMetaType(id)};
if (!QDBusMetaType::demarshall(qvariant_cast<QDBusArgument>(value), other.metaType(), other.data())) {
qWarning("QDBusConnection: type `%s' (%d) is not registered with QtDBus. "
"Use qDBusRegisterMetaType to register it",
- mp.typeName(), id);
+ mp.typeName(), id.id());
return PropertyWriteFailed;
}
value = other;
}
- if (mp.userType() == qMetaTypeId<QDBusVariant>())
+ if (mp.metaType() == QMetaType::fromType<QDBusVariant>())
value = QVariant::fromValue(QDBusVariant(value));
// the property type here should match
@@ -456,10 +456,10 @@ static QVariantMap readAllProperties(QObject *object, int flags)
continue;
// is it a registered property?
- int typeId = mp.userType();
- if (!typeId)
+ QMetaType type = mp.metaType();
+ if (!type.isValid())
continue;
- const char *signature = QDBusMetaType::typeToSignature(typeId);
+ const char *signature = QDBusMetaType::typeToSignature(type);
if (!signature)
continue;
diff --git a/src/dbus/qdbusmarshaller.cpp b/src/dbus/qdbusmarshaller.cpp
index 5e25e4913b..4977d7b265 100644
--- a/src/dbus/qdbusmarshaller.cpp
+++ b/src/dbus/qdbusmarshaller.cpp
@@ -189,8 +189,8 @@ inline bool QDBusMarshaller::append(const QDBusVariant &arg)
}
const QVariant &value = arg.variant();
- int id = value.userType();
- if (id == QMetaType::UnknownType) {
+ QMetaType id = value.metaType();
+ if (!id.isValid()) {
qWarning("QDBusMarshaller: cannot add a null QDBusVariant");
error(QLatin1String("Variant containing QVariant::Invalid passed in arguments"));
return false;
@@ -210,9 +210,9 @@ inline bool QDBusMarshaller::append(const QDBusVariant &arg)
if (!signature) {
qWarning("QDBusMarshaller: type `%s' (%d) is not registered with D-BUS. "
"Use qDBusRegisterMetaType to register it",
- QMetaType(id).name(), id);
+ id.name(), id.id());
error(QLatin1String("Unregistered type %1 passed in arguments")
- .arg(QLatin1String(QMetaType(id).name())));
+ .arg(QLatin1String(id.name())));
return false;
}
@@ -246,46 +246,46 @@ inline QDBusMarshaller *QDBusMarshaller::beginStructure()
return beginCommon(DBUS_TYPE_STRUCT, nullptr);
}
-inline QDBusMarshaller *QDBusMarshaller::beginArray(int id)
+inline QDBusMarshaller *QDBusMarshaller::beginArray(QMetaType id)
{
- const char *signature = QDBusMetaType::typeToSignature( QVariant::Type(id) );
+ const char *signature = QDBusMetaType::typeToSignature(id);
if (!signature) {
qWarning("QDBusMarshaller: type `%s' (%d) is not registered with D-BUS. "
"Use qDBusRegisterMetaType to register it",
- QMetaType(id).name(), id);
+ id.name(), id.id());
error(QLatin1String("Unregistered type %1 passed in arguments")
- .arg(QLatin1String(QMetaType(id).name())));
+ .arg(QLatin1String(id.name())));
return this;
}
return beginCommon(DBUS_TYPE_ARRAY, signature);
}
-inline QDBusMarshaller *QDBusMarshaller::beginMap(int kid, int vid)
+inline QDBusMarshaller *QDBusMarshaller::beginMap(QMetaType kid, QMetaType vid)
{
- const char *ksignature = QDBusMetaType::typeToSignature( QVariant::Type(kid) );
+ const char *ksignature = QDBusMetaType::typeToSignature(kid);
if (!ksignature) {
qWarning("QDBusMarshaller: type `%s' (%d) is not registered with D-BUS. "
"Use qDBusRegisterMetaType to register it",
- QMetaType(kid).name(), kid);
+ kid.name(), kid.id());
error(QLatin1String("Unregistered type %1 passed in arguments")
- .arg(QLatin1String(QMetaType(kid).name())));
+ .arg(QLatin1String(kid.name())));
return this;
}
if (ksignature[1] != 0 || !QDBusUtil::isValidBasicType(*ksignature)) {
qWarning("QDBusMarshaller: type '%s' (%d) cannot be used as the key type in a D-BUS map.",
- QMetaType(kid).name(), kid);
+ kid.name(), kid.id());
error(QLatin1String("Type %1 passed in arguments cannot be used as a key in a map")
- .arg(QLatin1String(QMetaType(kid).name())));
+ .arg(QLatin1String(kid.name())));
return this;
}
- const char *vsignature = QDBusMetaType::typeToSignature( QVariant::Type(vid) );
+ const char *vsignature = QDBusMetaType::typeToSignature(vid);
if (!vsignature) {
- const char *typeName = QMetaType(vid).name();
+ const char *typeName = vid.name();
qWarning("QDBusMarshaller: type `%s' (%d) is not registered with D-BUS. "
"Use qDBusRegisterMetaType to register it",
- typeName, vid);
+ typeName, vid.id());
error(QLatin1String("Unregistered type %1 passed in arguments")
.arg(QLatin1String(typeName)));
return this;
@@ -383,8 +383,8 @@ void QDBusMarshaller::error(const QString &msg)
bool QDBusMarshaller::appendVariantInternal(const QVariant &arg)
{
- int id = arg.userType();
- if (id == QMetaType::UnknownType) {
+ QMetaType id = arg.metaType();
+ if (!id.isValid()) {
qWarning("QDBusMarshaller: cannot add an invalid QVariant");
error(QLatin1String("Variant containing QVariant::Invalid passed in arguments"));
return false;
@@ -412,13 +412,13 @@ bool QDBusMarshaller::appendVariantInternal(const QVariant &arg)
return appendCrossMarshalling(&demarshaller);
}
- const char *signature = QDBusMetaType::typeToSignature( QVariant::Type(id) );
+ const char *signature = QDBusMetaType::typeToSignature(id);
if (!signature) {
qWarning("QDBusMarshaller: type `%s' (%d) is not registered with D-BUS. "
"Use qDBusRegisterMetaType to register it",
- QMetaType(id).name(), id);
+ id.name(), id.id());
error(QLatin1String("Unregistered type %1 passed in arguments")
- .arg(QLatin1String(QMetaType(id).name())));
+ .arg(QLatin1String(id.name())));
return false;
}
@@ -485,7 +485,7 @@ bool QDBusMarshaller::appendVariantInternal(const QVariant &arg)
case DBUS_TYPE_ARRAY:
// could be many things
// find out what kind of array it is
- switch (arg.userType()) {
+ switch (arg.metaType().id()) {
case QMetaType::QStringList:
append( arg.toStringList() );
return true;
diff --git a/src/dbus/qdbusmessage.cpp b/src/dbus/qdbusmessage.cpp
index 118b31c1e1..eb3ca3a909 100644
--- a/src/dbus/qdbusmessage.cpp
+++ b/src/dbus/qdbusmessage.cpp
@@ -274,10 +274,10 @@ QDBusMessage QDBusMessagePrivate::makeLocal(const QDBusConnectionPrivate &conn,
QVariantList::ConstIterator it = asSent.d_ptr->arguments.constBegin();
QVariantList::ConstIterator end = asSent.d_ptr->arguments.constEnd();
for ( ; it != end; ++it) {
- int id = it->userType();
+ QMetaType id = it->metaType();
const char *signature = QDBusMetaType::typeToSignature(id);
- if ((id != QMetaType::QStringList && id != QMetaType::QByteArray &&
- qstrlen(signature) != 1) || id == qMetaTypeId<QDBusVariant>()) {
+ if ((id.id() != QMetaType::QStringList && id.id() != QMetaType::QByteArray &&
+ qstrlen(signature) != 1) || id == QMetaType::fromType<QDBusVariant>()) {
// yes, we are
// we must marshall and demarshall again so as to create QDBusArgument
// entries for the complex types
diff --git a/src/dbus/qdbusmessage.h b/src/dbus/qdbusmessage.h
index cd8f74d8bc..17ca8cf06d 100644
--- a/src/dbus/qdbusmessage.h
+++ b/src/dbus/qdbusmessage.h
@@ -45,7 +45,7 @@
#include <QtCore/qlist.h>
#include <QtCore/qvariant.h>
-#ifndef QT_NO_DBUS
+#if !defined(QT_NO_DBUS) && !defined(QT_BOOTSTRAPPED)
#if defined(Q_OS_WIN) && defined(interface)
# undef interface
@@ -53,7 +53,6 @@
QT_BEGIN_NAMESPACE
-
class QDBusMessagePrivate;
class Q_DBUS_EXPORT QDBusMessage
{
diff --git a/src/dbus/qdbusmetaobject.cpp b/src/dbus/qdbusmetaobject.cpp
index dee885395a..8ca5e0b5ba 100644
--- a/src/dbus/qdbusmetaobject.cpp
+++ b/src/dbus/qdbusmetaobject.cpp
@@ -170,7 +170,7 @@ QDBusMetaObjectGenerator::findType(const QByteArray &signature,
Type result;
result.id = QMetaType::UnknownType;
- int type = QDBusMetaType::signatureToType(signature);
+ int type = QDBusMetaType::signatureToMetaType(signature).id();
if (type == QMetaType::UnknownType && !qt_dbus_metaobject_skip_annotations) {
// it's not a type normally handled by our meta type system
// it must contain an annotation
@@ -199,7 +199,7 @@ QDBusMetaObjectGenerator::findType(const QByteArray &signature,
type = QMetaType::fromName(typeName).id();
}
- if (type == QMetaType::UnknownType || signature != QDBusMetaType::typeToSignature(type)) {
+ if (type == QMetaType::UnknownType || signature != QDBusMetaType::typeToSignature(QMetaType(type))) {
// type is still unknown or doesn't match back to the signature that it
// was expected to, so synthesize a fake type
typeName = "QDBusRawType<0x" + signature.toHex() + ">*";
diff --git a/src/dbus/qdbusmetatype.cpp b/src/dbus/qdbusmetatype.cpp
index 0c2dae18a2..083a20d8b3 100644
--- a/src/dbus/qdbusmetatype.cpp
+++ b/src/dbus/qdbusmetatype.cpp
@@ -303,7 +303,7 @@ bool QDBusMetaType::demarshall(const QDBusArgument &arg, QMetaType metaType, voi
Note: this function only handles the basic D-Bus types.
\sa QDBusUtil::isValidSingleSignature(), typeToSignature(),
- QVariant::type(), QVariant::userType()
+ QVariant::metaType()
*/
QMetaType QDBusMetaType::signatureToMetaType(const char *signature)
{
@@ -388,7 +388,7 @@ QMetaType QDBusMetaType::signatureToMetaType(const char *signature)
More types can be registered with the qDBusRegisterMetaType() function.
\sa QDBusUtil::isValidSingleSignature(), signatureToType(),
- QVariant::type(), QVariant::userType()
+ QVariant::metaType()
*/
const char *QDBusMetaType::typeToSignature(QMetaType type)
{
diff --git a/src/dbus/qdbusmetatype.h b/src/dbus/qdbusmetatype.h
index 4898db3080..1de3df9e88 100644
--- a/src/dbus/qdbusmetatype.h
+++ b/src/dbus/qdbusmetatype.h
@@ -60,10 +60,6 @@ public:
static bool demarshall(const QDBusArgument &, QMetaType id, void *data);
static QMetaType signatureToMetaType(const char *signature);
- static int signatureToType(const char *signature)
- { return signatureToMetaType(signature).id(); }
- static const char *typeToSignature(int type)
- { return typeToSignature(QMetaType(type)); }
static const char *typeToSignature(QMetaType type);
};
diff --git a/src/dbus/qdbusmetatype_p.h b/src/dbus/qdbusmetatype_p.h
index 39deaf9f2f..71a621b059 100644
--- a/src/dbus/qdbusmetatype_p.h
+++ b/src/dbus/qdbusmetatype_p.h
@@ -66,37 +66,37 @@ QT_BEGIN_NAMESPACE
struct QDBusMetaTypeId
{
- static int message(); // QDBusMessage
- static int argument(); // QDBusArgument
- static int variant(); // QDBusVariant
- static int objectpath(); // QDBusObjectPath
- static int signature(); // QDBusSignature
- static int error(); // QDBusError
- static int unixfd(); // QDBusUnixFileDescriptor
+ static QMetaType message(); // QDBusMessage
+ static QMetaType argument(); // QDBusArgument
+ static QMetaType variant(); // QDBusVariant
+ static QMetaType objectpath(); // QDBusObjectPath
+ static QMetaType signature(); // QDBusSignature
+ static QMetaType error(); // QDBusError
+ static QMetaType unixfd(); // QDBusUnixFileDescriptor
static void init();
};
-inline int QDBusMetaTypeId::message()
-{ return qMetaTypeId<QDBusMessage>(); }
+inline QMetaType QDBusMetaTypeId::message()
+{ return QMetaType::fromType<QDBusMessage>(); }
-inline int QDBusMetaTypeId::argument()
-{ return qMetaTypeId<QDBusArgument>(); }
+inline QMetaType QDBusMetaTypeId::argument()
+{ return QMetaType::fromType<QDBusArgument>(); }
-inline int QDBusMetaTypeId::variant()
-{ return qMetaTypeId<QDBusVariant>(); }
+inline QMetaType QDBusMetaTypeId::variant()
+{ return QMetaType::fromType<QDBusVariant>(); }
-inline int QDBusMetaTypeId::objectpath()
-{ return qMetaTypeId<QDBusObjectPath>(); }
+inline QMetaType QDBusMetaTypeId::objectpath()
+{ return QMetaType::fromType<QDBusObjectPath>(); }
-inline int QDBusMetaTypeId::signature()
-{ return qMetaTypeId<QDBusSignature>(); }
+inline QMetaType QDBusMetaTypeId::signature()
+{ return QMetaType::fromType<QDBusSignature>(); }
-inline int QDBusMetaTypeId::error()
-{ return qMetaTypeId<QDBusError>(); }
+inline QMetaType QDBusMetaTypeId::error()
+{ return QMetaType::fromType<QDBusError>(); }
-inline int QDBusMetaTypeId::unixfd()
-{ return qMetaTypeId<QDBusUnixFileDescriptor>(); }
+inline QMetaType QDBusMetaTypeId::unixfd()
+{ return QMetaType::fromType<QDBusUnixFileDescriptor>(); }
QT_END_NAMESPACE
diff --git a/src/dbus/qdbusmisc.cpp b/src/dbus/qdbusmisc.cpp
index c653e71097..29d13ca40b 100644
--- a/src/dbus/qdbusmisc.cpp
+++ b/src/dbus/qdbusmisc.cpp
@@ -135,20 +135,20 @@ bool qDBusInterfaceInObject(QObject *obj, const QString &interface_name)
// metaTypes.count() >= retval + 1 in all cases
//
// sig must be the normalised signature for the method
-int qDBusParametersForMethod(const QMetaMethod &mm, QList<int> &metaTypes, QString &errorMsg)
+int qDBusParametersForMethod(const QMetaMethod &mm, QList<QMetaType> &metaTypes, QString &errorMsg)
{
return qDBusParametersForMethod(mm.parameterTypes(), metaTypes, errorMsg);
}
#endif // QT_BOOTSTRAPPED
-int qDBusParametersForMethod(const QList<QByteArray> &parameterTypes, QList<int> &metaTypes,
+int qDBusParametersForMethod(const QList<QByteArray> &parameterTypes, QList<QMetaType> &metaTypes,
QString &errorMsg)
{
QDBusMetaTypeId::init();
metaTypes.clear();
- metaTypes.append(0); // return type
+ metaTypes.append(QMetaType()); // return type
int inputCount = 0;
bool seenMessage = false;
QList<QByteArray>::ConstIterator it = parameterTypes.constBegin();
@@ -164,14 +164,14 @@ int qDBusParametersForMethod(const QList<QByteArray> &parameterTypes, QList<int>
QByteArray basictype = type;
basictype.truncate(type.length() - 1);
- int id = QMetaType::fromName(basictype).id();
- if (id == 0) {
+ QMetaType id = QMetaType::fromName(basictype);
+ if (!id.isValid()) {
errorMsg = QLatin1String("Unregistered output type in parameter list: ") + QLatin1String(type);
return -1;
} else if (QDBusMetaType::typeToSignature(id) == nullptr)
return -1;
- metaTypes.append( id );
+ metaTypes.append(id);
seenMessage = true; // it cannot appear anymore anyways
continue;
}
@@ -184,7 +184,7 @@ int qDBusParametersForMethod(const QList<QByteArray> &parameterTypes, QList<int>
if (type.startsWith("QVector<"))
type = "QList<" + type.mid(sizeof("QVector<") - 1);
- int id = QMetaType::fromName(type).id();
+ QMetaType id = QMetaType::fromName(type);
#ifdef QT_BOOTSTRAPPED
// in bootstrap mode QDBusMessage isn't included, thus we need to resolve it manually here
if (type == "QDBusMessage") {
@@ -192,7 +192,7 @@ int qDBusParametersForMethod(const QList<QByteArray> &parameterTypes, QList<int>
}
#endif
- if (id == QMetaType::UnknownType) {
+ if (!id.isValid()) {
errorMsg = QLatin1String("Unregistered input type in parameter list: ") + QLatin1String(type);
return -1;
}
diff --git a/src/dbus/qdbuspendingcall.cpp b/src/dbus/qdbuspendingcall.cpp
index 9bfdc8edce..34f5f9fac3 100644
--- a/src/dbus/qdbuspendingcall.cpp
+++ b/src/dbus/qdbuspendingcall.cpp
@@ -185,7 +185,7 @@ bool QDBusPendingCallPrivate::setReplyCallback(QObject *target, const char *memb
return true;
}
-void QDBusPendingCallPrivate::setMetaTypes(int count, const int *types)
+void QDBusPendingCallPrivate::setMetaTypes(int count, const QMetaType *types)
{
if (count == 0) {
expectedReplySignature = QLatin1String(""); // not null
@@ -196,10 +196,8 @@ void QDBusPendingCallPrivate::setMetaTypes(int count, const int *types)
sig.reserve(count + count / 2);
for (int i = 0; i < count; ++i) {
const char *typeSig = QDBusMetaType::typeToSignature(types[i]);
- if (Q_UNLIKELY(!typeSig)) {
- qFatal("QDBusPendingReply: type %s is not registered with QtDBus",
- QMetaType(types[i]).name());
- }
+ if (Q_UNLIKELY(!typeSig))
+ qFatal("QDBusPendingReply: type %s is not registered with QtDBus", types[i].name());
sig += typeSig;
}
diff --git a/src/dbus/qdbuspendingcall_p.h b/src/dbus/qdbuspendingcall_p.h
index 0921d7c4f3..8d53b0e665 100644
--- a/src/dbus/qdbuspendingcall_p.h
+++ b/src/dbus/qdbuspendingcall_p.h
@@ -82,7 +82,7 @@ public:
// for the callback mechanism (see setReplyCallback and QDBusConnectionPrivate::sendWithReplyAsync)
QPointer<QObject> receiver;
- QList<int> metaTypes;
+ QList<QMetaType> metaTypes;
int methodIdx;
// }
@@ -104,7 +104,7 @@ public:
~QDBusPendingCallPrivate();
bool setReplyCallback(QObject *target, const char *member);
void waitForFinished();
- void setMetaTypes(int count, const int *types);
+ void setMetaTypes(int count, const QMetaType *types);
void checkReceivedSignature();
static QDBusPendingCall fromMessage(const QDBusMessage &msg);
diff --git a/src/dbus/qdbuspendingreply.cpp b/src/dbus/qdbuspendingreply.cpp
index f83b3d27a2..7499938184 100644
--- a/src/dbus/qdbuspendingreply.cpp
+++ b/src/dbus/qdbuspendingreply.cpp
@@ -275,7 +275,7 @@ QVariant QDBusPendingReplyBase::argumentAt(int index) const
return d->replyMessage.arguments().value(index);
}
-void QDBusPendingReplyBase::setMetaTypes(int count, const int *types)
+void QDBusPendingReplyBase::setMetaTypes(int count, const QMetaType *types)
{
Q_ASSERT(d);
const auto locker = qt_scoped_lock(d->mutex);
diff --git a/src/dbus/qdbuspendingreply.h b/src/dbus/qdbuspendingreply.h
index 18c02508a0..be1d9b89e1 100644
--- a/src/dbus/qdbuspendingreply.h
+++ b/src/dbus/qdbuspendingreply.h
@@ -58,7 +58,7 @@ protected:
void assign(const QDBusMessage &message);
QVariant argumentAt(int index) const;
- void setMetaTypes(int count, const int *metaTypes);
+ void setMetaTypes(int count, const QMetaType *metaTypes);
};
namespace QDBusPendingReplyTypes {
@@ -144,7 +144,7 @@ private:
if constexpr (Count == 0) {
setMetaTypes(0, nullptr);
} else {
- std::array<int, Count> typeIds = { QDBusPendingReplyTypes::metaTypeFor<Types>().id()... };
+ std::array<QMetaType, Count> typeIds = { QDBusPendingReplyTypes::metaTypeFor<Types>()... };
setMetaTypes(Count, typeIds.data());
}
}
diff --git a/src/dbus/qdbusreply.cpp b/src/dbus/qdbusreply.cpp
index a0556f6559..1a3278ff52 100644
--- a/src/dbus/qdbusreply.cpp
+++ b/src/dbus/qdbusreply.cpp
@@ -203,17 +203,17 @@ void qDBusReplyFill(const QDBusMessage &reply, QDBusError &error, QVariant &data
return;
}
- if (reply.arguments().count() >= 1 && reply.arguments().at(0).userType() == data.userType()) {
+ if (reply.arguments().count() >= 1 && reply.arguments().at(0).metaType() == data.metaType()) {
data = reply.arguments().at(0);
return;
}
- const char *expectedSignature = QDBusMetaType::typeToSignature(data.userType());
+ const char *expectedSignature = QDBusMetaType::typeToSignature(data.metaType());
const char *receivedType = nullptr;
QByteArray receivedSignature;
if (reply.arguments().count() >= 1) {
- if (reply.arguments().at(0).userType() == QDBusMetaTypeId::argument()) {
+ if (reply.arguments().at(0).metaType() == QDBusMetaTypeId::argument()) {
// compare signatures instead
QDBusArgument arg = qvariant_cast<QDBusArgument>(reply.arguments().at(0));
receivedSignature = arg.currentSignature().toLatin1();
@@ -224,8 +224,8 @@ void qDBusReplyFill(const QDBusMessage &reply, QDBusError &error, QVariant &data
}
} else {
// not an argument and doesn't match?
- int type = reply.arguments().at(0).userType();
- receivedType = QMetaType(type).name();
+ QMetaType type = reply.arguments().at(0).metaType();
+ receivedType = type.name();
receivedSignature = QDBusMetaType::typeToSignature(type);
}
}
diff --git a/src/dbus/qdbusutil.cpp b/src/dbus/qdbusutil.cpp
index 5152e4154e..8322ff02c4 100644
--- a/src/dbus/qdbusutil.cpp
+++ b/src/dbus/qdbusutil.cpp
@@ -80,7 +80,7 @@ static bool argToString(const QDBusArgument &arg, QString &out);
static bool variantToString(const QVariant &arg, QString &out)
{
- int argType = arg.userType();
+ int argType = arg.metaType().id();
if (argType == QMetaType::QStringList) {
out += QLatin1Char('{');
@@ -138,11 +138,11 @@ static bool variantToString(const QVariant &arg, QString &out)
} else if (argType == qMetaTypeId<QDBusVariant>()) {
const QVariant v = qvariant_cast<QDBusVariant>(arg).variant();
out += QLatin1String("[Variant");
- int vUserType = v.userType();
- if (vUserType != qMetaTypeId<QDBusVariant>()
- && vUserType != qMetaTypeId<QDBusSignature>()
- && vUserType != qMetaTypeId<QDBusObjectPath>()
- && vUserType != qMetaTypeId<QDBusArgument>())
+ QMetaType vUserType = v.metaType();
+ if (vUserType != QMetaType::fromType<QDBusVariant>()
+ && vUserType != QMetaType::fromType<QDBusSignature>()
+ && vUserType != QMetaType::fromType<QDBusObjectPath>()
+ && vUserType != QMetaType::fromType<QDBusArgument>())
out += QLatin1Char('(') + QLatin1String(v.typeName()) + QLatin1Char(')');
out += QLatin1String(": ");
if (!variantToString(v, out))
diff --git a/src/dbus/qdbusxmlgenerator.cpp b/src/dbus/qdbusxmlgenerator.cpp
index 7afeb66e09..35ca4b0b2d 100644
--- a/src/dbus/qdbusxmlgenerator.cpp
+++ b/src/dbus/qdbusxmlgenerator.cpp
@@ -101,10 +101,10 @@ static QString generateInterfaceXml(const QMetaObject *mo, int flags, int method
(!mp.isScriptable() && (flags & QDBusConnection::ExportNonScriptableProperties))))
continue;
- int typeId = mp.userType();
- if (!typeId)
+ QMetaType type = mp.metaType();
+ if (!type.isValid())
continue;
- const char *signature = QDBusMetaType::typeToSignature(typeId);
+ const char *signature = QDBusMetaType::typeToSignature(type);
if (!signature)
continue;
@@ -113,8 +113,8 @@ static QString generateInterfaceXml(const QMetaObject *mo, int flags, int method
QLatin1String(signature),
accessAsString(mp.isReadable(), mp.isWritable()));
- if (QDBusMetaType::signatureToType(signature) == QMetaType::UnknownType) {
- const char *typeName = QMetaType(typeId).name();
+ if (!QDBusMetaType::signatureToMetaType(signature).isValid()) {
+ const char *typeName = type.name();
retval += QLatin1String(">\n <annotation name=\"org.qtproject.QtDBus.QtTypeName\" value=\"%3\"/>\n </property>\n")
.arg(typeNameToXml(typeName));
} else {
@@ -153,29 +153,29 @@ static QString generateInterfaceXml(const QMetaObject *mo, int flags, int method
isSignal ? "signal" : "method", mm.name().constData());
// check the return type first
- int typeId = mm.returnType();
- if (typeId != QMetaType::UnknownType && typeId != QMetaType::Void) {
+ QMetaType typeId = mm.returnMetaType();
+ if (typeId.isValid() && typeId.id() != QMetaType::Void) {
const char *typeName = QDBusMetaType::typeToSignature(typeId);
if (typeName) {
xml += QLatin1String(" <arg type=\"%1\" direction=\"out\"/>\n")
.arg(typeNameToXml(typeName));
// do we need to describe this argument?
- if (QDBusMetaType::signatureToType(typeName) == QMetaType::UnknownType)
+ if (!QDBusMetaType::signatureToMetaType(typeName).isValid())
xml += QLatin1String(" <annotation name=\"org.qtproject.QtDBus.QtTypeName.Out0\" value=\"%1\"/>\n")
.arg(typeNameToXml(QMetaType(typeId).name()));
} else {
- qWarning() << "Unsupported return type" << typeId << QMetaType(typeId).name() << "in method" << mm.name();
+ qWarning() << "Unsupported return type" << typeId.id() << typeId.name() << "in method" << mm.name();
continue;
}
}
- else if (typeId == QMetaType::UnknownType) {
+ else if (!typeId.isValid()) {
qWarning() << "Invalid return type in method" << mm.name();
continue; // wasn't a valid type
}
QList<QByteArray> names = mm.parameterNames();
- QList<int> types;
+ QList<QMetaType> types;
QString errorMsg;
int inputCount = qDBusParametersForMethod(mm, types, errorMsg);
if (inputCount == -1) {
@@ -208,7 +208,7 @@ static QString generateInterfaceXml(const QMetaObject *mo, int flags, int method
qUtf16Printable(name), signature, isOutput ? "out" : "in");
// do we need to describe this argument?
- if (QDBusMetaType::signatureToType(signature) == QMetaType::UnknownType) {
+ if (!QDBusMetaType::signatureToMetaType(signature).isValid()) {
const char *typeName = QMetaType(types.at(j)).name();
xml += QString::fromLatin1(" <annotation name=\"org.qtproject.QtDBus.QtTypeName.%1%2\" value=\"%3\"/>\n")
.arg(isOutput ? QLatin1String("Out") : QLatin1String("In"))
diff --git a/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp b/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp
index a8532f7003..eabfc8e5e3 100644
--- a/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp
+++ b/src/tools/qdbuscpp2xml/qdbuscpp2xml.cpp
@@ -80,7 +80,7 @@ static const char help[] =
" -V Show the program version and quit.\n"
"\n";
-int qDBusParametersForMethod(const FunctionDef &mm, QList<int> &metaTypes, QString &errorMsg)
+int qDBusParametersForMethod(const FunctionDef &mm, QList<QMetaType> &metaTypes, QString &errorMsg)
{
QList<QByteArray> parameterTypes;
parameterTypes.reserve(mm.arguments.size());
@@ -107,13 +107,13 @@ static QString addFunction(const FunctionDef &mm, bool isSignal = false) {
int typeId = QMetaType::fromName(mm.normalizedType).id();
if (typeId != QMetaType::Void) {
if (typeId) {
- const char *typeName = QDBusMetaType::typeToSignature(typeId);
+ const char *typeName = QDBusMetaType::typeToSignature(QMetaType(typeId));
if (typeName) {
xml += QString::fromLatin1(" <arg type=\"%1\" direction=\"out\"/>\n")
.arg(typeNameToXml(typeName));
// do we need to describe this argument?
- if (QDBusMetaType::signatureToType(typeName) == QMetaType::UnknownType)
+ if (!QDBusMetaType::signatureToMetaType(typeName).isValid())
xml += QString::fromLatin1(" <annotation name=\"org.qtproject.QtDBus.QtTypeName.Out0\" value=\"%1\"/>\n")
.arg(typeNameToXml(mm.normalizedType.constData()));
} else {
@@ -124,7 +124,7 @@ static QString addFunction(const FunctionDef &mm, bool isSignal = false) {
}
}
QList<ArgumentDef> names = mm.arguments;
- QList<int> types;
+ QList<QMetaType> types;
QString errorMsg;
int inputCount = qDBusParametersForMethod(mm, types, errorMsg);
if (inputCount == -1) {
@@ -150,14 +150,14 @@ static QString addFunction(const FunctionDef &mm, bool isSignal = false) {
bool isOutput = isSignal || j > inputCount;
- const char *signature = QDBusMetaType::typeToSignature(types.at(j));
+ const char *signature = QDBusMetaType::typeToSignature(QMetaType(types.at(j)));
xml += QString::fromLatin1(" <arg %1type=\"%2\" direction=\"%3\"/>\n")
.arg(name,
QLatin1String(signature),
isOutput ? QLatin1String("out") : QLatin1String("in"));
// do we need to describe this argument?
- if (QDBusMetaType::signatureToType(signature) == QMetaType::UnknownType) {
+ if (!QDBusMetaType::signatureToMetaType(signature).isValid()) {
const char *typeName = QMetaType(types.at(j)).name();
xml += QString::fromLatin1(" <annotation name=\"org.qtproject.QtDBus.QtTypeName.%1%2\" value=\"%3\"/>\n")
.arg(isOutput ? QLatin1String("Out") : QLatin1String("In"))
@@ -214,7 +214,7 @@ static QString generateInterfaceXml(const ClassDef *mo)
mp.type.constData());
continue;
}
- const char *signature = QDBusMetaType::typeToSignature(typeId);
+ const char *signature = QDBusMetaType::typeToSignature(QMetaType(typeId));
if (!signature)
continue;
@@ -223,7 +223,7 @@ static QString generateInterfaceXml(const ClassDef *mo)
QLatin1String(signature),
QLatin1String(accessvalues[access]));
- if (QDBusMetaType::signatureToType(signature) == QMetaType::UnknownType) {
+ if (!QDBusMetaType::signatureToMetaType(signature).isValid()) {
retval += QString::fromLatin1(">\n <annotation name=\"org.qtproject.QtDBus.QtTypeName\" value=\"%3\"/>\n </property>\n")
.arg(typeNameToXml(mp.type.constData()));
} else {
diff --git a/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp b/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp
index 96928f4da3..d31c52e188 100644
--- a/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp
+++ b/src/tools/qdbusxml2cpp/qdbusxml2cpp.cpp
@@ -205,7 +205,7 @@ static QString classNameForInterface(const QString &interface, ClassType classTy
// we first search for "Out" and if not found we search for "In"
static QByteArray qtTypeName(const QString &signature, const QDBusIntrospection::Annotations &annotations, int paramId = -1, const char *direction = "Out", bool isSignal = false)
{
- int type = QDBusMetaType::signatureToType(signature.toLatin1());
+ int type = QDBusMetaType::signatureToMetaType(signature.toLatin1()).id();
if (type == QMetaType::UnknownType) {
QString annotationName = QString::fromLatin1("org.qtproject.QtDBus.QtTypeName");
if (paramId >= 0)