From 2bf186a2e598a4bccdc4979085e8e4d963a3819d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Abecasis?= Date: Wed, 25 Jan 2012 17:40:24 +0100 Subject: Allow function types to be registered without workarounds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Commit 4b8ceb41aed352f10d36db5284453f425dbc5f3f added the requirement that pointed-to types need to be registered when registering pointer types. Unfortunately, the implementation also affects function pointer types. This change whitelists 0, 1, 2 and 3 argument functions as not deriving from QObject, forgoing the need to workaround details of the type registration implementation when registering those function pointer types. Change-Id: I4d855e9d70a8179a6e31b84623ad5bf063e0d6d8 Reviewed-by: Jędrzej Nowacki Reviewed-by: Olivier Goffart Reviewed-by: Stephen Kelly --- src/corelib/io/qtextstream.h | 6 ------ src/corelib/kernel/qmetatype.h | 6 ++++++ 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/corelib/io/qtextstream.h b/src/corelib/io/qtextstream.h index e3686e10ef..3e1d0faa25 100644 --- a/src/corelib/io/qtextstream.h +++ b/src/corelib/io/qtextstream.h @@ -208,12 +208,6 @@ typedef void (QTextStream::*QTSMFI)(int); // manipulator w/int argument typedef void (QTextStream::*QTSMFC)(QChar); // manipulator w/QChar argument -namespace QtPrivate { -template <> struct IsPointerToTypeDerivedFromQObject { - enum { Value = false }; -}; -} - class Q_CORE_EXPORT QTextStreamManipulator { public: diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index fd5c5f30dd..0ea9d26394 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -365,6 +365,12 @@ namespace QtPrivate { Q_STATIC_ASSERT_X(sizeof(T), "Type argument of Q_DECLARE_METATYPE(T*) must be fully defined"); enum { Value = sizeof(checkType(static_cast(0))) == sizeof(yes_type) }; }; + + // Function pointers don't derive from QObject + template struct IsPointerToTypeDerivedFromQObject { enum { Value = false }; }; + template struct IsPointerToTypeDerivedFromQObject { enum { Value = false }; }; + template struct IsPointerToTypeDerivedFromQObject { enum { Value = false }; }; + template struct IsPointerToTypeDerivedFromQObject { enum { Value = false }; }; } template -- cgit v1.2.3