summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qobject.cpp
diff options
context:
space:
mode:
authorAhmad Samir <a.samirh78@gmail.com>2025-05-31 17:34:54 +0300
committerAhmad Samir <a.samirh78@gmail.com>2025-09-08 22:27:52 +0300
commit67abb290be80024cd36cc4c78d4e74c3ff705dba (patch)
treea1a7e2800c57c8180f235480fcaf68bcd9989119 /src/corelib/kernel/qobject.cpp
parent0cf90e65bfa1a0c19055b17519d333939bc23759 (diff)
QMetaObjectPrivate: use QSpan instead of passing a length and pointer
This is easier to read specially because the QArgumentTypeArray parameter is passed on to other methods down the line. Use std::equal to compare the signal's args with the slot's args, instead of hand-rolled for-loop. Change-Id: I38ad0aa02f08dbe86f4f24ed040ec36f3a147b49 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/kernel/qobject.cpp')
-rw-r--r--src/corelib/kernel/qobject.cpp25
1 files changed, 11 insertions, 14 deletions
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index a10c4258f53..6493f95c050 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -3064,8 +3064,7 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const char *sign
QArgumentTypeArray signalTypes;
Q_ASSERT(QMetaObjectPrivate::get(smeta)->revision >= 7);
QByteArrayView signalName = QMetaObjectPrivate::decodeMethodSignature(signalView, signalTypes);
- int signal_index = QMetaObjectPrivate::indexOfSignalRelative(
- &smeta, signalName, signalTypes.size(), signalTypes.constData());
+ int signal_index = QMetaObjectPrivate::indexOfSignalRelative(&smeta, signalName, signalTypes);
if (signal_index < 0) {
// check for normalized signatures
pinnedSignal = QMetaObjectPrivate::normalizedSignature(signalView);
@@ -3074,8 +3073,7 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const char *sign
signalTypes.clear();
signalName = QMetaObjectPrivate::decodeMethodSignature(signalView, signalTypes);
smeta = sender->metaObject();
- signal_index = QMetaObjectPrivate::indexOfSignalRelative(
- &smeta, signalName, signalTypes.size(), signalTypes.constData());
+ signal_index = QMetaObjectPrivate::indexOfSignalRelative(&smeta, signalName, signalTypes);
}
if (signal_index < 0) {
err_method_notfound(sender, signal_arg, "connect");
@@ -3098,13 +3096,14 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const char *sign
switch (membcode) {
case QSLOT_CODE:
method_index_relative = QMetaObjectPrivate::indexOfSlotRelative(
- &rmeta, methodName, methodTypes.size(), methodTypes.constData());
+ &rmeta, methodName, methodTypes);
break;
case QSIGNAL_CODE:
method_index_relative = QMetaObjectPrivate::indexOfSignalRelative(
- &rmeta, methodName, methodTypes.size(), methodTypes.constData());
+ &rmeta, methodName, methodTypes);
break;
}
+
if (method_index_relative < 0) {
// check for normalized methods
pinnedMethod = QMetaObjectPrivate::normalizedSignature(methodView);
@@ -3117,11 +3116,11 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const char *sign
switch (membcode) {
case QSLOT_CODE:
method_index_relative = QMetaObjectPrivate::indexOfSlotRelative(
- &rmeta, methodName, methodTypes.size(), methodTypes.constData());
+ &rmeta, methodName, methodTypes);
break;
case QSIGNAL_CODE:
method_index_relative = QMetaObjectPrivate::indexOfSignalRelative(
- &rmeta, methodName, methodTypes.size(), methodTypes.constData());
+ &rmeta, methodName, methodTypes);
break;
}
}
@@ -3132,8 +3131,7 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const char *sign
return QMetaObject::Connection(nullptr);
}
- if (!QMetaObjectPrivate::checkConnectArgs(signalTypes.size(), signalTypes.constData(),
- methodTypes.size(), methodTypes.constData())) {
+ if (!QMetaObjectPrivate::checkConnectArgs(signalTypes, methodTypes)) {
qCWarning(lcConnect,
"QObject::connect: Incompatible sender/receiver arguments"
"\n %s::%s --> %s::%s",
@@ -3397,7 +3395,7 @@ bool QObject::disconnect(const QObject *sender, const char *signal,
int signal_index = -1;
if (signal) {
signal_index = QMetaObjectPrivate::indexOfSignalRelative(
- &smeta, signalName, signalTypes.size(), signalTypes.constData());
+ &smeta, signalName, signalTypes);
if (signal_index < 0)
break;
signal_index = QMetaObjectPrivate::originalClone(smeta, signal_index);
@@ -3411,7 +3409,7 @@ bool QObject::disconnect(const QObject *sender, const char *signal,
const QMetaObject *rmeta = receiver->metaObject();
do {
int method_index = QMetaObjectPrivate::indexOfMethod(
- rmeta, methodName, methodTypes.size(), methodTypes.constData());
+ rmeta, methodName, methodTypes);
if (method_index >= 0)
while (method_index < rmeta->methodOffset())
rmeta = rmeta->superClass();
@@ -4418,8 +4416,7 @@ int QObjectPrivate::signalIndex(const char *signalName,
Q_ASSERT(QMetaObjectPrivate::get(base)->revision >= 7);
QArgumentTypeArray types;
QByteArrayView name = QMetaObjectPrivate::decodeMethodSignature(signalName, types);
- int relative_index = QMetaObjectPrivate::indexOfSignalRelative(
- &base, name, types.size(), types.constData());
+ int relative_index = QMetaObjectPrivate::indexOfSignalRelative(&base, name, types);
if (relative_index < 0)
return relative_index;
relative_index = QMetaObjectPrivate::originalClone(base, relative_index);