From af1ededf9c1c649b03d36c8d3cf636268aa68b5c Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Wed, 18 Jun 2014 19:14:05 +0100 Subject: [PATCH] refs #245 & #276 using variadic templates in CGenericDBusInterface --- src/blackmisc/genericdbusinterface.h | 151 ++------------------------- 1 file changed, 9 insertions(+), 142 deletions(-) diff --git a/src/blackmisc/genericdbusinterface.h b/src/blackmisc/genericdbusinterface.h index f523c58be..099cfb1d6 100644 --- a/src/blackmisc/genericdbusinterface.h +++ b/src/blackmisc/genericdbusinterface.h @@ -18,158 +18,25 @@ namespace BlackMisc public: - /*! - * \brief Generic DBus interface - * \param serverName - * \param path - * \param interfaceName - * \param connection - * \param parent - */ + //! Constructor CGenericDBusInterface(const QString &serverName, const QString &path, const QString &interfaceName, const QDBusConnection &connection, QObject *parent = 0) : QDBusAbstractInterface(serverName, path, interfaceName.toUtf8().constData(), connection, parent) { - // void } - /*! - * \brief Call DBus - * \param method - */ - void callDBus(const QLatin1String &method) + //! Call DBus, no return value + template + void callDBus(const QLatin1String &method, Args&&... args) { - QList argumentList; + QList argumentList { QVariant::fromValue(std::forward(args))... }; this->asyncCallWithArgumentList(method, argumentList); } - /*! - * \brief Call DBus, no return value - * \param method - * \param p1 - * \return - */ - template void callDBus(const QLatin1String &method, P1 p1) + //! Call DBus with synchronous return value + template + Ret callDBusRet(const QLatin1String &method, Args&&... args) { - QList argumentList; - argumentList << QVariant::fromValue(p1); - this->asyncCallWithArgumentList(method, argumentList); - } - - /*! - * \brief Call DBus, no return value - * \param method - * \param p1 - * \param p2 - * \return - */ - template void callDBus(const QLatin1String &method, P1 p1, P2 p2) - { - QList argumentList; - argumentList << QVariant::fromValue(p1) << QVariant::fromValue(p2); - this->asyncCallWithArgumentList(method, argumentList); - } - - /*! - * \brief Call DBus, no return value - * \param method - * \param p1 - * \param p2 - * \param p3 - * \return - */ - template void callDBus(const QLatin1String &method, P1 p1, P2 p2, P3 p3) - { - QList argumentList; - argumentList << QVariant::fromValue(p1) << QVariant::fromValue(p2) << QVariant::fromValue(p3); - this->asyncCallWithArgumentList(method, argumentList); - } - - /*! - * \brief Call DBus, no return value - * \param method - * \param p1 - * \param p2 - * \param p3 - * \param p4 - * \return - */ - template void callDBus(const QLatin1String &method, P1 p1, P2 p2, P3 p3, P4 p4) - { - QList argumentList; - argumentList << QVariant::fromValue(p1) << QVariant::fromValue(p2) << QVariant::fromValue(p3) << QVariant::fromValue(p4); - this->asyncCallWithArgumentList(method, argumentList); - } - - /*! - * \brief Call DBus with return value - * \param method - * \return - */ - template Ret callDBusRet(const QLatin1String &method) - { - QList argumentList; - QDBusPendingReply pr = this->asyncCallWithArgumentList(method, argumentList); - return pr; - } - - /*! - * \brief Call DBus with return value - * \param method - * \param p1 - * \return - */ - template Ret callDBusRet(const QLatin1String &method, P1 p1) - { - QList argumentList; - argumentList << QVariant::fromValue(p1); - QDBusPendingReply pr = this->asyncCallWithArgumentList(method, argumentList); - return pr; - } - - /*! - * \brief Call DBus with return value - * \param method - * \param p1 - * \param p2 - * \return - */ - template Ret callDBusRet(const QLatin1String &method, P1 p1, P2 p2) - { - QList argumentList; - argumentList << QVariant::fromValue(p1) << QVariant::fromValue(p2); - QDBusPendingReply pr = this->asyncCallWithArgumentList(method, argumentList); - return pr; - } - - /*! - * \brief Call DBus with return value - * \param method - * \param p1 - * \param p2 - * \param p3 - * \return - */ - template Ret callDBusRet(const QLatin1String &method, P1 p1, P2 p2, P3 p3) - { - QList argumentList; - argumentList << QVariant::fromValue(p1) << QVariant::fromValue(p2) << QVariant::fromValue(p3); - QDBusPendingReply pr = this->asyncCallWithArgumentList(method, argumentList); - return pr; - } - - /*! - * \brief Call DBus with return value - * \param method - * \param p1 - * \param p2 - * \param p3 - * \param p4 - * \return - */ - template Ret callDBusRet(const QLatin1String &method, P1 p1, P2 p2, P3 p3, P4 p4) - { - QList argumentList; - argumentList << QVariant::fromValue(p1) << QVariant::fromValue(p2) << QVariant::fromValue(p3) << QVariant::fromValue(p4); + QList argumentList { QVariant::fromValue(std::forward(args))... }; QDBusPendingReply pr = this->asyncCallWithArgumentList(method, argumentList); return pr; }