QObject::connect: reduce generated code size for statics and functors
Instead of placing the assignment of false in the impl() function, move it to the inline QSlotObjectBase::compare() function. That means it's assigned in one place (two, actually, inside qobject.cpp), instead of for every static member, non-member or functor we connect or disconnect. Change-Id: I87e17314d8b24ae983b1fffd1453623ad4c4dcb2 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
This commit is contained in:
parent
3379ef2280
commit
2f01e04d8f
@ -126,7 +126,7 @@ namespace QtPrivate {
|
||||
inline void destroyIfLastRef() Q_DECL_NOTHROW
|
||||
{ if (!m_ref.deref()) m_impl(Destroy, this, Q_NULLPTR, Q_NULLPTR, Q_NULLPTR); }
|
||||
|
||||
inline bool compare(void **a) { bool ret; m_impl(Compare, this, Q_NULLPTR, a, &ret); return ret; }
|
||||
inline bool compare(void **a) { bool ret = false; m_impl(Compare, this, Q_NULLPTR, a, &ret); return ret; }
|
||||
inline void call(QObject *r, void **a) { m_impl(Call, this, r, a, Q_NULLPTR); }
|
||||
protected:
|
||||
~QSlotObjectBase() {}
|
||||
@ -172,10 +172,9 @@ namespace QtPrivate {
|
||||
case Call:
|
||||
FuncType::template call<Args, R>(static_cast<QStaticSlotObject*>(this_)->function, r, a);
|
||||
break;
|
||||
case Compare:
|
||||
*ret = false; // not implemented
|
||||
break;
|
||||
case NumOperations: ;
|
||||
case Compare: // not implemented
|
||||
case NumOperations:
|
||||
Q_UNUSED(ret);
|
||||
}
|
||||
}
|
||||
public:
|
||||
@ -197,10 +196,9 @@ namespace QtPrivate {
|
||||
case Call:
|
||||
FuncType::template call<Args, R>(static_cast<QFunctorSlotObject*>(this_)->function, r, a);
|
||||
break;
|
||||
case Compare:
|
||||
*ret = false; // not implemented
|
||||
break;
|
||||
case NumOperations: ;
|
||||
case Compare: // not implemented
|
||||
case NumOperations:
|
||||
Q_UNUSED(ret);
|
||||
}
|
||||
}
|
||||
public:
|
||||
|
Loading…
Reference in New Issue
Block a user