From dec9666dd4e6dc86d6d5a2520f0900c8ed508517 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Tue, 24 Jul 2012 10:53:26 +0200 Subject: Make qRegisterMetaType constexpr for built-in types. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For consistency with qMetaTypeId, and because we can. Change-Id: I6882a16ef3c0d84539048c9f2c201c4a2b2ca7ad Reviewed-by: Jędrzej Nowacki Reviewed-by: Marc Mutz --- .../corelib/kernel/qmetatype/tst_qmetatype.cpp | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'tests') 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::Value; +#define REGISTER_METATYPE_FUNCTION(Type, MetaTypeId, Name) \ + case qRegisterMetaType< Name >(): metaType = RegisterMetaTypeStruct::Value; + template struct MetaTypeIdStruct { }; +template +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()> \ +{ \ + 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()> struct MetaTypeIdStructDefaultTemplateValue { enum { Value }; }; + +template()> +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); } -- cgit v1.2.3