X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fsignalproxy.h;h=7f2a1ddc8bece917b9f5acffe1efc9a994b80239;hp=a76a352017ceafbf46ae510e38df4b2748b94260;hb=2a00e8f57d66d9913a10c30408b89676a74010a1;hpb=57e1cccf5a990b83bc8bde7959e85dec99db50a7 diff --git a/src/common/signalproxy.h b/src/common/signalproxy.h index a76a3520..7f2a1ddc 100644 --- a/src/common/signalproxy.h +++ b/src/common/signalproxy.h @@ -210,18 +210,20 @@ class SignalProxy::ExtendedMetaObject { class MethodDescriptor { public: MethodDescriptor(const QMetaMethod &method); - MethodDescriptor() : _returnType(-1), _minArgCount(-1) {} + MethodDescriptor() : _returnType(-1), _minArgCount(-1), _receiverMode(SignalProxy::Client) {} inline const QByteArray &methodName() const { return _methodName; } inline const QList &argTypes() const { return _argTypes; } inline int returnType() const { return _returnType; } inline int minArgCount() const { return _minArgCount; } + inline SignalProxy::ProxyMode receiverMode() const { return _receiverMode; } private: QByteArray _methodName; QList _argTypes; int _returnType; int _minArgCount; + SignalProxy::ProxyMode _receiverMode; // Only acceptable as a Sync Call if the receiving SignalProxy is in this mode. }; public: @@ -231,30 +233,29 @@ public: inline const QList &argTypes(int methodId) { return methodDescriptor(methodId).argTypes(); } inline int returnType(int methodId) { return methodDescriptor(methodId).returnType(); } inline int minArgCount(int methodId) { return methodDescriptor(methodId).minArgCount(); } + inline SignalProxy::ProxyMode receiverMode(int methodId) { return methodDescriptor(methodId).receiverMode(); } + + inline int methodId(const QByteArray &methodName) { return _methodIds.contains(methodName) ? _methodIds[methodName] : -1; } inline int updatedRemotelyId() { return _updatedRemotelyId; } - int methodId(const QByteArray &methodName); - const QHash &syncMap(); + inline const QHash &slotMap() { return _methodIds; } const QHash &receiveMap(); const QMetaObject *metaObject() const { return _meta; } static QByteArray methodName(const QMetaMethod &method); - static bool methodsMatch(const QMetaMethod &signal, const QMetaMethod &slot); - static QString methodBaseName(const QMetaMethod &method); + static QString ExtendedMetaObject::methodBaseName(const QMetaMethod &method); private: const MethodDescriptor &methodDescriptor(int methodId); const QMetaObject *_meta; - QHash _methods; - QHash _methodIds; - int _updatedRemotelyId; // id of the updatedRemotely() signal - makes things faster - QHash _syncMap; - QHash _receiveMap; + QHash _methods; + QHash _methodIds; + QHash _receiveMap; // if slot x is called then hand over the result to slot y };