diff options
author | Jędrzej Nowacki <jedrzej.nowacki@nokia.com> | 2012-02-13 16:26:35 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-03-02 12:57:29 +0100 |
commit | 362bde8e8eef41fc6a338ed8fbe6cbf7e9996019 (patch) | |
tree | 96f93a2b19acaba947d13e936f9f6b3cba12d2ff /src/corelib/kernel/qmetatypeswitcher_p.h | |
parent | 2b70a7d25c3e73d02d6d14075790668dcfc16e64 (diff) |
Introduce QMetaType::UnknownType.
QMetaType::Void was ambiguous, it was pointing to a valid type (void)
and in the same time it was signaling errors in QMetaType. There was
no clean way to check if returned type was valid void or some
unregistered type.
This feature will be used by new QMetaObject revision which will
store type ids instead of type names. So it will be easy to
distinguish between:
void mySlot();
MyUnregisteredType mySlot();
Change-Id: I73ff097f75585a95e12df74d50c6f3141153e771
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Diffstat (limited to 'src/corelib/kernel/qmetatypeswitcher_p.h')
-rw-r--r-- | src/corelib/kernel/qmetatypeswitcher_p.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/corelib/kernel/qmetatypeswitcher_p.h b/src/corelib/kernel/qmetatypeswitcher_p.h index e9c15ea214..ffd188c972 100644 --- a/src/corelib/kernel/qmetatypeswitcher_p.h +++ b/src/corelib/kernel/qmetatypeswitcher_p.h @@ -59,7 +59,8 @@ QT_BEGIN_NAMESPACE class QMetaTypeSwitcher { public: - class NotBuiltinType; + class NotBuiltinType; // type is not a built-in type, but it may be a custom type or an unknown type + class UnknownType; // type not known to QMetaType system template<class ReturnType, class DelegateObject> static ReturnType switcher(DelegateObject &logic, int type, const void *data); }; @@ -74,7 +75,11 @@ ReturnType QMetaTypeSwitcher::switcher(DelegateObject &logic, int type, const vo switch (QMetaType::Type(type)) { QT_FOR_EACH_STATIC_TYPE(QT_METATYPE_SWICHER_CASE) + case QMetaType::UnknownType: + return logic.delegate(static_cast<UnknownType const *>(data)); default: + if (type < QMetaType::User) + return logic.delegate(static_cast<UnknownType const *>(data)); return logic.delegate(static_cast<NotBuiltinType const *>(data)); } } |