diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2022-11-04 18:09:04 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2022-11-09 04:05:50 -0700 |
commit | bdc8778d7a9cc904564567a3b5bff1e74694c7d2 (patch) | |
tree | b2f892529e8e65cedcd1f9365513393ef6eb8a00 /src/corelib/kernel | |
parent | cf0a1c2e5165a8e8cc05dff0092857942cf06331 (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.cpp | 8 |
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); |