summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qvariant.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2020-07-13 19:25:16 +0200
committerLars Knoll <lars.knoll@qt.io>2020-08-24 00:17:57 +0200
commit2b8324440276d4255fce1fb0cff882ae06ab9f76 (patch)
tree667b110783a5cf3ac63fe4de3bbb0917fc3fb738 /src/corelib/kernel/qvariant.cpp
parentfefb1c136220750ff4bbe2638108c4f7273bab19 (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.cpp242
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)