Small QMetaType optimization.
authorJędrzej Nowacki <jedrzej.nowacki@nokia.com>
Fri, 6 Jan 2012 11:13:49 +0000 (12:13 +0100)
committerQt by Nokia <qt-info@nokia.com>
Tue, 10 Jan 2012 00:25:59 +0000 (01:25 +0100)
Prefer compile time check over a runtime.

Change-Id: Ib78563083c765d1fd72217c5aa529d0cbb951130
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
src/corelib/kernel/qmetatype.cpp

index c5e3d21..7132a09 100644 (file)
@@ -1434,12 +1434,12 @@ class TypeConstructor {
         static void *Construct(const int type, void *where, const T *copy)
         {
             QMetaType::Constructor ctor = 0;
-            if (type >= QMetaType::FirstGuiType && type <= QMetaType::LastGuiType) {
+            if (QTypeModuleInfo<T>::IsGui) {
                 Q_ASSERT(qMetaTypeGuiHelper);
                 if (!qMetaTypeGuiHelper)
                     return 0;
                 ctor = qMetaTypeGuiHelper[type - QMetaType::FirstGuiType].constructor;
-            } else if (type >= QMetaType::FirstWidgetsType && type <= QMetaType::LastWidgetsType) {
+            } else if (QTypeModuleInfo<T>::IsWidget) {
                 Q_ASSERT(qMetaTypeWidgetsHelper);
                 if (!qMetaTypeWidgetsHelper)
                     return 0;
@@ -1526,12 +1526,12 @@ class TypeDestructor {
         static void Destruct(const int type, void *where)
         {
             QMetaType::Destructor dtor = 0;
-            if (type >= QMetaType::FirstGuiType && type <= QMetaType::LastGuiType) {
+            if (QTypeModuleInfo<T>::IsGui) {
                 Q_ASSERT(qMetaTypeGuiHelper);
                 if (!qMetaTypeGuiHelper)
                     return;
                 dtor = qMetaTypeGuiHelper[type - QMetaType::FirstGuiType].destructor;
-            } else if (type >= QMetaType::FirstWidgetsType && type <= QMetaType::LastWidgetsType) {
+            } else if (QTypeModuleInfo<T>::IsWidget) {
                 Q_ASSERT(qMetaTypeWidgetsHelper);
                 if (!qMetaTypeWidgetsHelper)
                     return;
@@ -1600,12 +1600,12 @@ class SizeOf {
     struct SizeOfImpl<T, /* IsAcceptedType = */ false> {
         static int Size(const int type)
         {
-            if (type >= QMetaType::FirstGuiType && type <= QMetaType::LastGuiType) {
+            if (QTypeModuleInfo<T>::IsGui) {
                 Q_ASSERT(qMetaTypeGuiHelper);
                 if (!qMetaTypeGuiHelper)
                     return 0;
                 return qMetaTypeGuiHelper[type - QMetaType::FirstGuiType].size;
-            } else if (type >= QMetaType::FirstWidgetsType && type <= QMetaType::LastWidgetsType) {
+            } else if (QTypeModuleInfo<T>::IsWidget) {
                 Q_ASSERT(qMetaTypeWidgetsHelper);
                 if (!qMetaTypeWidgetsHelper)
                     return 0;