Remove compiler-specific implementations of Q_IS_ENUM
Since the macro is now just a wrapper for std::is_enum, its use is also deprecated. [ChangeLog][QtCore][Global] Q_IS_ENUM is deprecated. Use std::is_enum<>::value instead. Change-Id: I09b9f4559c02c81f338cace927873318f2acafde Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
b64fc69d1c
commit
5c3b16706f
@ -42,21 +42,8 @@
|
||||
#ifndef QISENUM_H
|
||||
#define QISENUM_H
|
||||
|
||||
#ifndef Q_IS_ENUM
|
||||
# if defined(Q_CC_GNU) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
|
||||
# define Q_IS_ENUM(x) __is_enum(x)
|
||||
# elif defined(Q_CC_MSVC) && defined(_MSC_FULL_VER) && (_MSC_FULL_VER >=140050215)
|
||||
# define Q_IS_ENUM(x) __is_enum(x)
|
||||
# elif defined(Q_CC_CLANG)
|
||||
# if __has_extension(is_enum)
|
||||
# define Q_IS_ENUM(x) __is_enum(x)
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef Q_IS_ENUM
|
||||
# define Q_IS_ENUM(x) std::is_enum<x>::value
|
||||
#endif
|
||||
// Use of Q_IS_ENUM is deprecated since 5.8
|
||||
#define Q_IS_ENUM(x) std::is_enum<x>::value
|
||||
|
||||
// shut up syncqt
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
@ -38,13 +38,11 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include <QtCore/qisenum.h>
|
||||
#include <QtCore/qglobal.h>
|
||||
|
||||
#ifndef QTYPEINFO_H
|
||||
#define QTYPEINFO_H
|
||||
|
||||
#include <QtCore/qglobal.h>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
/*
|
||||
@ -64,7 +62,7 @@ public:
|
||||
isIntegral = std::is_integral<T>::value,
|
||||
isComplex = true,
|
||||
isStatic = true,
|
||||
isRelocatable = Q_IS_ENUM(T),
|
||||
isRelocatable = std::is_enum<T>::value,
|
||||
isLarge = (sizeof(T)>sizeof(void*)),
|
||||
isDummy = false, //### Qt6: remove
|
||||
sizeOf = sizeof(T)
|
||||
|
@ -45,7 +45,6 @@
|
||||
#include <QtCore/qatomic.h>
|
||||
#include <QtCore/qbytearray.h>
|
||||
#include <QtCore/qvarlengtharray.h>
|
||||
#include <QtCore/qisenum.h>
|
||||
#ifndef QT_NO_QOBJECT
|
||||
#include <QtCore/qobjectdefs.h>
|
||||
#endif
|
||||
@ -1635,7 +1634,7 @@ namespace QtPrivate {
|
||||
| (IsSharedPointerToTypeDerivedFromQObject<T>::Value ? QMetaType::SharedPointerToQObject : 0)
|
||||
| (IsWeakPointerToTypeDerivedFromQObject<T>::Value ? QMetaType::WeakPointerToQObject : 0)
|
||||
| (IsTrackingPointerToTypeDerivedFromQObject<T>::Value ? QMetaType::TrackingPointerToQObject : 0)
|
||||
| (Q_IS_ENUM(T) ? QMetaType::IsEnumeration : 0)
|
||||
| (std::is_enum<T>::value ? QMetaType::IsEnumeration : 0)
|
||||
| (IsGadgetHelper<T>::Value ? QMetaType::IsGadget : 0)
|
||||
};
|
||||
};
|
||||
|
@ -65,7 +65,7 @@ template<typename T>
|
||||
struct QVariantIntegrator
|
||||
{
|
||||
static const bool CanUseInternalSpace = sizeof(T) <= sizeof(QVariant::Private::Data)
|
||||
&& ((QTypeInfoQuery<T>::isRelocatable) || Q_IS_ENUM(T));
|
||||
&& ((QTypeInfoQuery<T>::isRelocatable) || std::is_enum<T>::value);
|
||||
typedef std::integral_constant<bool, CanUseInternalSpace> CanUseInternalSpace_t;
|
||||
};
|
||||
Q_STATIC_ASSERT(QVariantIntegrator<double>::CanUseInternalSpace);
|
||||
|
@ -48,7 +48,6 @@ private slots:
|
||||
void qConstructorFunction();
|
||||
void qCoreAppStartupFunction();
|
||||
void qCoreAppStartupFunctionRestart();
|
||||
void isEnum();
|
||||
void qAlignOf();
|
||||
void integerForSize();
|
||||
void qprintable();
|
||||
@ -365,100 +364,6 @@ public:
|
||||
enum AnEnum {};
|
||||
};
|
||||
|
||||
#if defined (Q_COMPILER_CLASS_ENUM)
|
||||
enum class isEnum_G : qint64 {};
|
||||
#endif
|
||||
|
||||
void tst_QGlobal::isEnum()
|
||||
{
|
||||
#if defined (Q_CC_MSVC)
|
||||
#define IS_ENUM_TRUE(x) (Q_IS_ENUM(x) == true)
|
||||
#define IS_ENUM_FALSE(x) (Q_IS_ENUM(x) == false)
|
||||
#else
|
||||
#define IS_ENUM_TRUE(x) (Q_IS_ENUM(x) == true && std::is_enum<x>::value == true)
|
||||
#define IS_ENUM_FALSE(x) (Q_IS_ENUM(x) == false && std::is_enum<x>::value == false)
|
||||
#endif
|
||||
|
||||
QVERIFY(IS_ENUM_TRUE(isEnum_B_Byte));
|
||||
QVERIFY(IS_ENUM_TRUE(const isEnum_B_Byte));
|
||||
QVERIFY(IS_ENUM_TRUE(volatile isEnum_B_Byte));
|
||||
QVERIFY(IS_ENUM_TRUE(const volatile isEnum_B_Byte));
|
||||
|
||||
QVERIFY(IS_ENUM_TRUE(isEnum_B_Short));
|
||||
QVERIFY(IS_ENUM_TRUE(const isEnum_B_Short));
|
||||
QVERIFY(IS_ENUM_TRUE(volatile isEnum_B_Short));
|
||||
QVERIFY(IS_ENUM_TRUE(const volatile isEnum_B_Short));
|
||||
|
||||
QVERIFY(IS_ENUM_TRUE(isEnum_B_Int));
|
||||
QVERIFY(IS_ENUM_TRUE(const isEnum_B_Int));
|
||||
QVERIFY(IS_ENUM_TRUE(volatile isEnum_B_Int));
|
||||
QVERIFY(IS_ENUM_TRUE(const volatile isEnum_B_Int));
|
||||
|
||||
QVERIFY(IS_ENUM_TRUE(isEnum_F::AnEnum));
|
||||
QVERIFY(IS_ENUM_TRUE(const isEnum_F::AnEnum));
|
||||
QVERIFY(IS_ENUM_TRUE(volatile isEnum_F::AnEnum));
|
||||
QVERIFY(IS_ENUM_TRUE(const volatile isEnum_F::AnEnum));
|
||||
|
||||
QVERIFY(IS_ENUM_FALSE(void));
|
||||
QVERIFY(IS_ENUM_FALSE(isEnum_B_Byte &));
|
||||
QVERIFY(IS_ENUM_FALSE(isEnum_B_Byte[1]));
|
||||
QVERIFY(IS_ENUM_FALSE(const isEnum_B_Byte[1]));
|
||||
QVERIFY(IS_ENUM_FALSE(isEnum_B_Byte[]));
|
||||
QVERIFY(IS_ENUM_FALSE(int));
|
||||
QVERIFY(IS_ENUM_FALSE(float));
|
||||
QVERIFY(IS_ENUM_FALSE(isEnum_A));
|
||||
QVERIFY(IS_ENUM_FALSE(isEnum_A *));
|
||||
QVERIFY(IS_ENUM_FALSE(const isEnum_A));
|
||||
QVERIFY(IS_ENUM_FALSE(isEnum_C));
|
||||
QVERIFY(IS_ENUM_FALSE(isEnum_D));
|
||||
QVERIFY(IS_ENUM_FALSE(isEnum_E));
|
||||
QVERIFY(IS_ENUM_FALSE(void()));
|
||||
QVERIFY(IS_ENUM_FALSE(void(*)()));
|
||||
QVERIFY(IS_ENUM_FALSE(int isEnum_A::*));
|
||||
QVERIFY(IS_ENUM_FALSE(void (isEnum_A::*)()));
|
||||
|
||||
QVERIFY(IS_ENUM_FALSE(size_t));
|
||||
QVERIFY(IS_ENUM_FALSE(bool));
|
||||
QVERIFY(IS_ENUM_FALSE(wchar_t));
|
||||
|
||||
QVERIFY(IS_ENUM_FALSE(char));
|
||||
QVERIFY(IS_ENUM_FALSE(unsigned char));
|
||||
QVERIFY(IS_ENUM_FALSE(short));
|
||||
QVERIFY(IS_ENUM_FALSE(unsigned short));
|
||||
QVERIFY(IS_ENUM_FALSE(int));
|
||||
QVERIFY(IS_ENUM_FALSE(unsigned int));
|
||||
QVERIFY(IS_ENUM_FALSE(long));
|
||||
QVERIFY(IS_ENUM_FALSE(unsigned long));
|
||||
|
||||
QVERIFY(IS_ENUM_FALSE(qint8));
|
||||
QVERIFY(IS_ENUM_FALSE(quint8));
|
||||
QVERIFY(IS_ENUM_FALSE(qint16));
|
||||
QVERIFY(IS_ENUM_FALSE(quint16));
|
||||
QVERIFY(IS_ENUM_FALSE(qint32));
|
||||
QVERIFY(IS_ENUM_FALSE(quint32));
|
||||
QVERIFY(IS_ENUM_FALSE(qint64));
|
||||
QVERIFY(IS_ENUM_FALSE(quint64));
|
||||
|
||||
QVERIFY(IS_ENUM_FALSE(void *));
|
||||
QVERIFY(IS_ENUM_FALSE(int *));
|
||||
|
||||
#if defined (Q_COMPILER_UNICODE_STRINGS)
|
||||
QVERIFY(IS_ENUM_FALSE(char16_t));
|
||||
QVERIFY(IS_ENUM_FALSE(char32_t));
|
||||
#endif
|
||||
|
||||
#if defined (Q_COMPILER_CLASS_ENUM)
|
||||
// Strongly type class enums are not handled by the
|
||||
// fallback type traits implementation. Any compiler
|
||||
// supported by Qt that supports C++0x class enums
|
||||
// should also support the __is_enum intrinsic.
|
||||
QVERIFY(Q_IS_ENUM(isEnum_G));
|
||||
#endif
|
||||
|
||||
#undef IS_ENUM_TRUE
|
||||
#undef IS_ENUM_FALSE
|
||||
}
|
||||
|
||||
struct Empty {};
|
||||
template <class T> struct AlignmentInStruct { T dummy; };
|
||||
|
||||
|
@ -712,7 +712,7 @@ void tst_QMetaType::flags_data()
|
||||
<< bool(!QTypeInfo<RealType>::isStatic) \
|
||||
<< bool(QTypeInfo<RealType>::isComplex) \
|
||||
<< bool(QtPrivate::IsPointerToTypeDerivedFromQObject<RealType>::Value) \
|
||||
<< bool(Q_IS_ENUM(RealType));
|
||||
<< bool(std::is_enum<RealType>::value);
|
||||
QT_FOR_EACH_STATIC_CORE_CLASS(ADD_METATYPE_TEST_ROW)
|
||||
QT_FOR_EACH_STATIC_PRIMITIVE_POINTER(ADD_METATYPE_TEST_ROW)
|
||||
QT_FOR_EACH_STATIC_CORE_POINTER(ADD_METATYPE_TEST_ROW)
|
||||
|
Loading…
x
Reference in New Issue
Block a user