47 const QMetaObject *mo = caller->metaObject();
49 QMetaMethod member = QMetaObjectPrivate::signal(mo, signal_index);
50 Q_ASSERT(member.isValid());
52 if (classIsIgnored(mo->className())) {
60 str += mo->className();
63 QString objname = caller->objectName();
64 str += objname.toLocal8Bit();
65 if (!objname.isEmpty())
67 str += QByteArray::number(quintptr(caller), 16).rightJustified(8,
'0');
73 QList<QByteArray> args = member.parameterTypes();
74 for (
int i = 0; i < args.size(); ++i) {
75 const QByteArray &arg = args.at(i);
76 int typeId = QMetaType::fromName(args.at(i).constData()).id();
77 if (arg.endsWith(
'*') || arg.endsWith(
'&')) {
81 if (arg.endsWith(
'&'))
84 quintptr addr = quintptr(*
reinterpret_cast<
void **>(argv[i + 1]));
85 str.append(QByteArray::number(addr, 16).rightJustified(8,
'0'));
86 }
else if (typeId != QMetaType::UnknownType) {
87 Q_ASSERT(typeId != QMetaType::Void);
90 .append(QVariant(QMetaType(typeId), argv[i + 1]).toString().toLocal8Bit())
95 if (str.endsWith(
", "))
106 const QMetaObject *mo = caller->metaObject();
108 QMetaMethod member = mo->method(method_index);
109 if (!member.isValid())
118 str += mo->className();
121 QString objname = caller->objectName();
122 str += objname.toLocal8Bit();
123 if (!objname.isEmpty())
125 str += QByteArray::number(quintptr(caller), 16).rightJustified(8,
'0');
128 str += member.methodSignature();
151void QSignalDumper::startDump()
156 static QSignalSpyCallbackSet set = { QTest::qSignalDumperCallback,
157 QTest::qSignalDumperCallbackSlot, QTest::qSignalDumperCallbackEndSignal,
nullptr };
158 qt_register_signal_spy_callbacks(&set);