summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2022-11-04 18:09:04 -0700
committerThiago Macieira <thiago.macieira@intel.com>2022-11-09 04:05:50 -0700
commitbdc8778d7a9cc904564567a3b5bff1e74694c7d2 (patch)
treeb2f892529e8e65cedcd1f9365513393ef6eb8a00 /src/corelib/kernel
parentcf0a1c2e5165a8e8cc05dff0092857942cf06331 (diff)
QVariant: add support for numeric comparisons for char16_t and char32_t
Change-Id: I3d74c753055744deb8acfffd17248af45fd20556 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r--src/corelib/kernel/qvariant.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp
index 9fb30c6f28..3c3a5a84b0 100644
--- a/src/corelib/kernel/qvariant.cpp
+++ b/src/corelib/kernel/qvariant.cpp
@@ -157,6 +157,8 @@ static std::optional<qlonglong> qConvertToNumber(const QVariant::Private *d, boo
case QMetaType::ULongLong:
case QMetaType::UInt:
case QMetaType::UChar:
+ case QMetaType::Char16:
+ case QMetaType::Char32:
case QMetaType::UShort:
case QMetaType::ULong:
return qlonglong(qMetaTypeUNumber(d));
@@ -184,6 +186,8 @@ static std::optional<qreal> qConvertToRealNumber(const QVariant::Private *d)
case QMetaType::ULongLong:
case QMetaType::UInt:
case QMetaType::UChar:
+ case QMetaType::Char16:
+ case QMetaType::Char32:
case QMetaType::UShort:
case QMetaType::ULong:
return qreal(qMetaTypeUNumber(d));
@@ -2140,6 +2144,8 @@ static bool qIsNumericType(uint tp)
Q_UINT64_C(1) << QMetaType::Double |
Q_UINT64_C(1) << QMetaType::Float |
Q_UINT64_C(1) << QMetaType::Char |
+ Q_UINT64_C(1) << QMetaType::Char16 |
+ Q_UINT64_C(1) << QMetaType::Char32 |
Q_UINT64_C(1) << QMetaType::SChar |
Q_UINT64_C(1) << QMetaType::UChar |
Q_UINT64_C(1) << QMetaType::Short |
@@ -2227,7 +2233,7 @@ static int numericTypePromotion(const QtPrivate::QMetaTypeInterface *iface1,
auto isUnsigned = [](uint tp) {
// only types for which sizeof(T) >= sizeof(int); lesser ones promote to int
return tp == QMetaType::ULongLong || tp == QMetaType::ULong ||
- tp == QMetaType::UInt;
+ tp == QMetaType::UInt || tp == QMetaType::Char32;
};
bool isUnsigned1 = isUnsigned(t1);
bool isUnsigned2 = isUnsigned(t2);