From f6f1ee63dc1fbdd1f49a18949bd44f6bb0251d1d Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 4 Nov 2022 14:39:06 -0700 Subject: qfloat16: make it a built-in metatype I've reserved the IDs for int128, uint128, bfloat16, and float128, because the mask in qvariant.cpp's qIsNumericType() requires primitives to be less than 64 to operate properly. Added a QMetaType/QDataStream test to confirm it is indeed built-in. Change-Id: I3d74c753055744deb8acfffd17247f7f57bada02 Reviewed-by: Allan Sandfeld Jensen --- src/corelib/kernel/qvariant.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/corelib/kernel/qvariant.cpp') diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index 15b0f84f1b..75bdef2383 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -183,6 +183,8 @@ static std::optional qConvertToRealNumber(const QVariant::Private *d) return qreal(d->get()); case QMetaType::Float: return qreal(d->get()); + case QMetaType::Float16: + return qreal(d->get()); case QMetaType::ULongLong: case QMetaType::UInt: case QMetaType::UChar: @@ -2161,7 +2163,7 @@ static bool qIsNumericType(uint tp) static bool qIsFloatingPoint(uint tp) { - return tp == QMetaType::Double || tp == QMetaType::Float; + return tp == QMetaType::Double || tp == QMetaType::Float || tp == QMetaType::Float16; } static bool canBeNumericallyCompared(const QtPrivate::QMetaTypeInterface *iface1, -- cgit v1.2.3