diff options
author | Stephen Kelly <stephen.kelly@kdab.com> | 2012-07-24 10:53:26 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-07-25 00:48:20 +0200 |
commit | dec9666dd4e6dc86d6d5a2520f0900c8ed508517 (patch) | |
tree | 6c7aa849a4e7c73208a5bfe065e7d3693e427b68 /tests/auto/corelib/kernel | |
parent | a5b029049771df1bdb01d5d8cf7e9e4bc964060f (diff) |
Make qRegisterMetaType constexpr for built-in types.
For consistency with qMetaTypeId, and because we can.
Change-Id: I6882a16ef3c0d84539048c9f2c201c4a2b2ca7ad
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'tests/auto/corelib/kernel')
-rw-r--r-- | tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp index 230138d40d..b5169fe839 100644 --- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp +++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp @@ -1681,11 +1681,19 @@ void tst_QMetaType::metaObject() #define METATYPE_ID_FUNCTION(Type, MetaTypeId, Name) \ case ::qMetaTypeId< Name >(): metaType = MetaTypeIdStruct<MetaTypeId>::Value; +#define REGISTER_METATYPE_FUNCTION(Type, MetaTypeId, Name) \ + case qRegisterMetaType< Name >(): metaType = RegisterMetaTypeStruct<MetaTypeId>::Value; + template<int> struct MetaTypeIdStruct { }; +template<int> +struct RegisterMetaTypeStruct +{ +}; + #define METATYPE_ID_STRUCT(Type, MetaTypeId, Name) \ template<> \ struct MetaTypeIdStruct< ::qMetaTypeId< Name >()> \ @@ -1693,14 +1701,28 @@ struct MetaTypeIdStruct< ::qMetaTypeId< Name >()> \ enum { Value = ::qMetaTypeId< Name >() }; \ }; +#define REGISTER_METATYPE_STRUCT(Type, MetaTypeId, Name) \ +template<> \ +struct RegisterMetaTypeStruct<qRegisterMetaType< Name >()> \ +{ \ + enum { Value = qRegisterMetaType< Name >() }; \ +}; + #if defined(Q_COMPILER_CONSTEXPR) QT_FOR_EACH_STATIC_TYPE(METATYPE_ID_STRUCT) +QT_FOR_EACH_STATIC_TYPE(REGISTER_METATYPE_STRUCT) template<int i = ::qMetaTypeId<int>()> struct MetaTypeIdStructDefaultTemplateValue { enum { Value }; }; + +template<int i = qRegisterMetaType<int>()> +struct RegisterMetaTypeStructDefaultTemplateValue +{ + enum { Value }; +}; #endif void tst_QMetaType::constexprMetaTypeIds() @@ -1715,6 +1737,14 @@ void tst_QMetaType::constexprMetaTypeIds() #endif default:; } + + switch (id) { +#if defined(Q_COMPILER_CONSTEXPR) + QT_FOR_EACH_STATIC_TYPE(REGISTER_METATYPE_FUNCTION) + metaType = RegisterMetaTypeStructDefaultTemplateValue<>::Value; +#endif + default:; + } Q_UNUSED(metaType); } |