X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fbasichandler.cpp;h=ddb397efb0356fb585a49b1c1651d4768d50d07d;hp=fe80c33ff552bb7103491e1059606c6ffd002752;hb=db00831bca59a012242d1ad5fac52a20c6cd2956;hpb=1a2a0f1880d6c30166928addbfb7b11849ff15cc diff --git a/src/common/basichandler.cpp b/src/common/basichandler.cpp index fe80c33f..ddb397ef 100644 --- a/src/common/basichandler.cpp +++ b/src/common/basichandler.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-10 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,79 +15,104 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ + #include "basichandler.h" +#include + +#include #include -#include "logger.h" +BasicHandler::BasicHandler(QObject* parent) + : QObject(parent) + , _methodPrefix("handle") +{} -BasicHandler::BasicHandler(QObject *parent) - : QObject(parent), - _defaultHandler(-1), - _initDone(false), - _methodPrefix("handle") -{ -} +BasicHandler::BasicHandler(QString methodPrefix, QObject* parent) + : QObject(parent) + , _methodPrefix(std::move(methodPrefix)) +{} -BasicHandler::BasicHandler(const QString &methodPrefix, QObject *parent) - : QObject(parent), - _defaultHandler(-1), - _initDone(false), - _methodPrefix(methodPrefix) +QStringList BasicHandler::providesHandlers() { + return handlerHash().keys(); } -QStringList BasicHandler::providesHandlers() { - return handlerHash().keys(); -} - -const QHash &BasicHandler::handlerHash() { - if(!_initDone) { - for(int i = metaObject()->methodOffset(); i < metaObject()->methodCount(); i++) { - QString methodSignature(metaObject()->method(i).signature()); - if(methodSignature.startsWith("defaultHandler")) { - _defaultHandler = i; - continue; - } +const QHash& BasicHandler::handlerHash() +{ + if (!_initDone) { + for (int i = metaObject()->methodOffset(); i < metaObject()->methodCount(); i++) { + QString methodSignature = metaObject()->method(i).methodSignature(); + if (methodSignature.startsWith("defaultHandler")) { + _defaultHandler = i; + continue; + } - if(!methodSignature.startsWith(_methodPrefix)) - continue; + if (!methodSignature.startsWith(_methodPrefix)) + continue; - methodSignature = methodSignature.section('(',0,0); // chop the attribute list - methodSignature = methodSignature.mid(_methodPrefix.length()); // strip "handle" or whatever the prefix is - _handlerHash[methodSignature] = i; + methodSignature = methodSignature.section('(', 0, 0); // chop the attribute list + methodSignature = methodSignature.mid(_methodPrefix.length()); // strip "handle" or whatever the prefix is + _handlerHash[methodSignature] = i; + } + _initDone = true; } - _initDone = true; - } - return _handlerHash; + return _handlerHash; } -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! +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(); + 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; + if (!handlerHash().contains(handler)) { + if (_defaultHandler == -1) { + qWarning() << QString("No such Handler: %1::%2%3").arg(metaObject()->className(), _methodPrefix, handler); + return; + } + else { + void* param[] = {nullptr, + 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); + void* param[] = {nullptr, + val0.data(), + val1.data(), + val2.data(), + val3.data(), + val4.data(), + val5.data(), + val6.data(), + val7.data(), + val8.data(), + val8.data(), + nullptr}; + qt_metacall(QMetaObject::InvokeMetaMethod, handlerHash()[handler], param); }