diff options
author | Lars Knoll <lars.knoll@qt.io> | 2020-07-13 19:25:16 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2020-08-24 00:17:57 +0200 |
commit | 2b8324440276d4255fce1fb0cff882ae06ab9f76 (patch) | |
tree | 667b110783a5cf3ac63fe4de3bbb0917fc3fb738 /src/corelib/kernel/qvariant.cpp | |
parent | fefb1c136220750ff4bbe2638108c4f7273bab19 (diff) |
Finish porting number conversions to QMetaType
Change-Id: I2861c6fb5f8192a627ffb41f1455c703849cf945
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/kernel/qvariant.cpp')
-rw-r--r-- | src/corelib/kernel/qvariant.cpp | 242 |
1 files changed, 0 insertions, 242 deletions
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index 1877832db3..f45aec5d60 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -245,66 +245,6 @@ static qreal qConvertToRealNumber(const QVariant::Private *d, bool *ok) } } -static qulonglong qConvertToUnsignedNumber(const QVariant::Private *d, bool *ok) -{ - *ok = true; - - switch (uint(d->typeId())) { - case QMetaType::QString: - return d->get<QString>().toULongLong(ok); - case QMetaType::QChar: - return d->get<QChar>().unicode(); - case QMetaType::QByteArray: - return d->get<QByteArray>().toULongLong(ok); - case QMetaType::Bool: - return qulonglong(d->get<bool>()); -#ifndef QT_BOOTSTRAPPED - case QMetaType::QCborValue: - if (d->get<QCborValue>().isDouble()) - return qulonglong(qConvertToRealNumber(d, ok)); - if (!d->get<QCborValue>().isInteger()) - return false; - return qulonglong(qMetaTypeNumber(d)); - case QMetaType::QJsonValue: - if (!d->get<QJsonValue>().isDouble()) - break; - Q_FALLTHROUGH(); -#endif - case QMetaType::Double: - case QMetaType::Int: - case QMetaType::Char: - case QMetaType::SChar: - case QMetaType::Short: - case QMetaType::Long: - case QMetaType::Float: - case QMetaType::LongLong: - return qulonglong(qMetaTypeNumber(d)); - case QMetaType::ULongLong: - case QMetaType::UInt: - case QMetaType::UChar: - case QMetaType::UShort: - case QMetaType::ULong: - return qMetaTypeUNumber(d); - } - - QMetaType typeInfo = d->type(); - if (typeInfo.flags() & QMetaType::IsEnumeration) { - switch (typeInfo.sizeOf()) { - case 1: - return d->get<unsigned char>(); - case 2: - return d->get<unsigned short>(); - case 4: - return d->get<unsigned int>(); - case 8: - return d->get<qulonglong>(); - } - } - - *ok = false; - return Q_UINT64_C(0); -} - template<typename TInput, typename LiteralWrapper> inline bool qt_convertToBool(const QVariant::Private *const d) { @@ -330,188 +270,6 @@ static bool convert(const QVariant::Private *d, int t, void *result) bool ok = true; switch (uint(t)) { - case QMetaType::Short: - *static_cast<short *>(result) = short(qConvertToNumber(d, &ok)); - return ok; - case QMetaType::Long: - *static_cast<long *>(result) = long(qConvertToNumber(d, &ok)); - return ok; - case QMetaType::UShort: - *static_cast<ushort *>(result) = ushort(qConvertToUnsignedNumber(d, &ok)); - return ok; - case QMetaType::ULong: - *static_cast<ulong *>(result) = ulong(qConvertToUnsignedNumber(d, &ok)); - return ok; - case QMetaType::Int: - *static_cast<int *>(result) = int(qConvertToNumber(d, &ok)); - return ok; - case QMetaType::UInt: - *static_cast<uint *>(result) = uint(qConvertToUnsignedNumber(d, &ok)); - return ok; - case QMetaType::LongLong: - *static_cast<qlonglong *>(result) = qConvertToNumber(d, &ok); - return ok; - case QMetaType::ULongLong: { - *static_cast<qulonglong *>(result) = qConvertToUnsignedNumber(d, &ok); - return ok; - } - case QMetaType::SChar: { - signed char s = qConvertToNumber(d, &ok); - *static_cast<signed char*>(result) = s; - return ok; - } - case QMetaType::UChar: { - *static_cast<uchar *>(result) = qConvertToUnsignedNumber(d, &ok); - return ok; - } - case QMetaType::Bool: { - bool *b = static_cast<bool *>(result); - switch (d->typeId()) { - case QMetaType::QByteArray: - *b = qt_convertToBool<QByteArray, const char*>(d); - break; - case QMetaType::QString: - *b = qt_convertToBool<QString, QLatin1String>(d); - break; - case QMetaType::QChar: - *b = !d->get<QChar>().isNull(); - break; - case QMetaType::Double: - case QMetaType::Int: - case QMetaType::LongLong: - case QMetaType::Char: - case QMetaType::SChar: - case QMetaType::Short: - case QMetaType::Long: - case QMetaType::Float: - *b = qMetaTypeNumber(d) != Q_INT64_C(0); - break; - case QMetaType::UInt: - case QMetaType::ULongLong: - case QMetaType::UChar: - case QMetaType::UShort: - case QMetaType::ULong: - *b = qMetaTypeUNumber(d) != Q_UINT64_C(0); - break; -#ifndef QT_BOOTSTRAPPED - case QMetaType::QCborValue: - *b = d->get<QCborValue>().toBool(); - if (!d->get<QCborValue>().isBool()) - return false; - break; - case QMetaType::QJsonValue: - *b = d->get<QJsonValue>().toBool(false); - if (!d->get<QJsonValue>().isBool()) - return false; - break; -#endif - default: - *b = false; - return false; - } - break; - } - case QMetaType::Double: { - double *f = static_cast<double *>(result); - switch (d->typeId()) { - case QMetaType::QString: - *f = d->get<QString>().toDouble(&ok); - return ok; - case QMetaType::QByteArray: - *f = d->get<QByteArray>().toDouble(&ok); - return ok; - case QMetaType::Bool: - *f = double(d->get<bool>()); - break; - case QMetaType::Float: - *f = double(d->get<float>()); - break; - case QMetaType::LongLong: - case QMetaType::Int: - case QMetaType::Char: - case QMetaType::SChar: - case QMetaType::Short: - case QMetaType::Long: - *f = double(qMetaTypeNumber(d)); - break; - case QMetaType::UInt: - case QMetaType::ULongLong: - case QMetaType::UChar: - case QMetaType::UShort: - case QMetaType::ULong: - *f = double(qMetaTypeUNumber(d)); - break; -#ifndef QT_BOOTSTRAPPED - case QMetaType::QCborValue: - *f = d->get<QCborValue>().toDouble(); - if (!d->get<QCborValue>().isDouble()) - return false; - break; - case QMetaType::QJsonValue: - *f = d->get<QJsonValue>().toDouble(0.0); - if (!d->get<QJsonValue>().isDouble()) - return false; - break; -#endif - default: - *f = 0.0; - return false; - } - break; - } - case QMetaType::Float: { - float *f = static_cast<float *>(result); - switch (d->typeId()) { - case QMetaType::QString: - *f = d->get<QString>().toFloat(&ok); - return ok; - case QMetaType::QByteArray: - *f = d->get<QByteArray>().toFloat(&ok); - return ok; - case QMetaType::Bool: - *f = float(d->get<bool>()); - break; - case QMetaType::Double: - *f = float(d->get<double>()); - break; - case QMetaType::LongLong: - case QMetaType::Int: - case QMetaType::Char: - case QMetaType::SChar: - case QMetaType::Short: - case QMetaType::Long: - *f = float(qMetaTypeNumber(d)); - break; - case QMetaType::UInt: - case QMetaType::ULongLong: - case QMetaType::UChar: - case QMetaType::UShort: - case QMetaType::ULong: - *f = float(qMetaTypeUNumber(d)); - break; -#ifndef QT_BOOTSTRAPPED - case QMetaType::QCborValue: - *f = d->get<QCborValue>().toDouble(); - if (!d->get<QCborValue>().isDouble()) - return false; - break; - case QMetaType::QJsonValue: - *f = d->get<QJsonValue>().toDouble(0.0); - if (!d->get<QJsonValue>().isDouble()) - return false; - break; -#endif - default: - *f = 0.0f; - return false; - } - break; - } - case QMetaType::Char: - { - *static_cast<qint8 *>(result) = qint8(qConvertToNumber(d, &ok)); - return ok; - } case QMetaType::Nullptr: *static_cast<std::nullptr_t *>(result) = nullptr; if (QMetaType::typeFlags(t) & (QMetaType::PointerToGadget | QMetaType::PointerToQObject) |