From 2d78e241918453a978f46a6246234cff881e9174 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Fri, 17 Aug 2012 16:13:19 +0200 Subject: QSlotObjectBase: make Operation enum protected We don't want people to go and call through the function pointer directly. Change-Id: I386645239974f008d513eaa62593c1141b294b60 Reviewed-by: Thiago Macieira Reviewed-by: Olivier Goffart --- src/corelib/kernel/qobject_impl.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/corelib/kernel/qobject_impl.h b/src/corelib/kernel/qobject_impl.h index 3586b1c7f7..9eda421f0e 100644 --- a/src/corelib/kernel/qobject_impl.h +++ b/src/corelib/kernel/qobject_impl.h @@ -106,6 +106,9 @@ namespace QtPrivate { // don't use virtual functions here; we don't want the // compiler to create tons of per-polymorphic-class stuff that // we'll never need. We just use one function pointer. + typedef void (*ImplFn)(int which, QSlotObjectBase* this_, QObject *receiver, void **args, bool *ret); + const ImplFn impl; + protected: enum Operation { Destroy, Call, @@ -113,10 +116,9 @@ namespace QtPrivate { NumOperations }; - typedef void (*ImplFn)(int which, QSlotObjectBase* this_, QObject *receiver, void **args, bool *ret); - const ImplFn impl; - + public: explicit QSlotObjectBase(ImplFn fn) : ref(1), impl(fn) {} + inline void destroy() { impl(Destroy, this, 0, 0, 0); } inline bool compare(void **a) { bool ret; impl(Compare, this, 0, a, &ret); return ret; } inline void call(QObject *r, void **a) { impl(Call, this, r, a, 0); } -- cgit v1.2.3