From 22494ea8e82d5d5588e67e8067f0273687ed9098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Nowacki?= Date: Tue, 13 Mar 2012 14:15:53 +0100 Subject: Unify QMetaType::TypeFlags detection. Duplicated code was removed. As an side effect: - one runtime flag check was replaced by a compile time check. - is enum flag can be used together with built-in types. Change-Id: I54173e7b07ce7e487d3cc21ba24dcccd28b5d049 Reviewed-by: Olivier Goffart --- src/corelib/kernel/qmetatype.h | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'src/corelib/kernel/qmetatype.h') diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index 0010c27beb..bf1b126200 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -435,6 +435,17 @@ namespace QtPrivate { template struct IsPointerToTypeDerivedFromQObject { enum { Value = false }; }; template struct IsPointerToTypeDerivedFromQObject { enum { Value = false }; }; template struct IsPointerToTypeDerivedFromQObject { enum { Value = false }; }; + + template + struct QMetaTypeTypeFlags + { + enum { Flags = (!QTypeInfo::isStatic ? QMetaType::MovableType : 0) + | (QTypeInfo::isComplex ? QMetaType::NeedsConstruction : 0) + | (QTypeInfo::isComplex ? QMetaType::NeedsDestruction : 0) + | (IsPointerToTypeDerivedFromQObject::Value ? QMetaType::PointerToQObject : 0) + | (Q_IS_ENUM(T) ? QMetaType::IsEnumeration : 0) + }; + }; } template @@ -448,18 +459,7 @@ int qRegisterMetaType(const char *typeName if (typedefOf != -1) return QMetaType::registerTypedef(typeName, typedefOf); - QMetaType::TypeFlags flags; - if (!QTypeInfo::isStatic) - flags |= QMetaType::MovableType; - if (QTypeInfo::isComplex) { - flags |= QMetaType::NeedsConstruction; - flags |= QMetaType::NeedsDestruction; - } - if (QtPrivate::IsPointerToTypeDerivedFromQObject::Value) - flags |= QMetaType::PointerToQObject; - if (Q_IS_ENUM(T)) - flags |= QMetaType::IsEnumeration; - + QMetaType::TypeFlags flags(QtPrivate::QMetaTypeTypeFlags::Flags); return QMetaType::registerType(typeName, qMetaTypeDeleteHelper, qMetaTypeCreateHelper, qMetaTypeDestructHelper, -- cgit v1.2.3