Small QMetaType optimization.

Prefer compile time check over a runtime.

Change-Id: Ib78563083c765d1fd72217c5aa529d0cbb951130
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
This commit is contained in:
Jędrzej Nowacki 2012-01-06 12:13:49 +01:00 committed by Qt by Nokia
parent 3d7ce0e96a
commit 64a735eed6

View 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;