void DBusOperationQueueHandler::Operation::copy(const char *name, const QList<QGenericArgument *> &args) { Q_ASSERT(name != NULL); m_name = new char[qstrlen(name) + 1]; qstrcpy(m_name, name); QListIterator<QGenericArgument *> it(args); while (it.hasNext()) { QGenericArgument *arg = it.next(); int type = QMetaType::type(arg->name()); if (!QMetaType::isRegistered(type)) { qCritical() << Q_FUNC_INFO << QString(QLatin1String("Type %1 not registered.")) .arg(QLatin1String(arg->name())); } else { Q_ASSERT(arg->name() != NULL); char *localName = new char[qstrlen(arg->name()) + 1]; qstrcpy(localName, arg->name()); #if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) void *localData = QMetaType::construct(type, arg->data()); #else void *localData = QMetaType::create(type, arg->data()); #endif m_args << (new QGenericArgument(localName, localData)); } } }
void BasicHandler::handle(const QString &member, QGenericArgument val0, QGenericArgument val1, QGenericArgument val2, QGenericArgument val3, QGenericArgument val4, QGenericArgument val5, QGenericArgument val6, QGenericArgument val7, QGenericArgument val8) { // Now we try to find a handler for this message. BTW, I do love the Trolltech guys ;-) // and now we even have a fast lookup! Thanks thiago! QString handler = member.toLower(); handler[0] = handler[0].toUpper(); if (!handlerHash().contains(handler)) { if (_defaultHandler == -1) { qWarning() << QString("No such Handler: %1::%2%3").arg(metaObject()->className(), _methodPrefix, handler); return; } else { void *param[] = { 0, Q_ARG(QString, member).data(), val0.data(), val1.data(), val2.data(), val3.data(), val4.data(), val5.data(), val6.data(), val7.data(), val8.data(), val8.data() }; qt_metacall(QMetaObject::InvokeMetaMethod, _defaultHandler, param); return; } } void *param[] = { 0, val0.data(), val1.data(), val2.data(), val3.data(), val4.data(), val5.data(), val6.data(), val7.data(), val8.data(), val8.data(), 0 }; qt_metacall(QMetaObject::InvokeMetaMethod, handlerHash()[handler], param); }