diff options
author | Lars Knoll <lars.knoll@qt.io> | 2020-07-14 00:30:41 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2020-08-24 00:18:17 +0200 |
commit | 2d3b31171d8fce2ab364ca2ceea4e75020933334 (patch) | |
tree | 7c9594a99d633382a07a2836608162330c9558c1 /src/corelib/kernel/qmetatype.cpp | |
parent | 53047c3623c28a3184c17120a309055d2f189a77 (diff) |
Get rid of the old QVariant conversion codepath
All conversions do now happen through QMetaType::convert().
Change-Id: I70f7a883262087768acccf8361d34c0490ff2b43
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/kernel/qmetatype.cpp')
-rw-r--r-- | src/corelib/kernel/qmetatype.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index 4991cb748a..446511c14d 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -1236,6 +1236,10 @@ static const struct : QMetaTypeModuleHelper result = QCborValue(QCborValue::Null); return true; ); + QMETATYPE_CONVERTER(Nullptr, QCborValue, + result = nullptr; + return source.isNull(); + ); QMETATYPE_CONVERTER_ASSIGN(QCborValue, Bool); QMETATYPE_CONVERTER_ASSIGN(QCborValue, Int); QMETATYPE_CONVERTER_ASSIGN(QCborValue, UInt); @@ -1423,7 +1427,12 @@ static const struct : QMetaTypeModuleHelper QMETATYPE_CONVERTER(QJsonValue, Nullptr, Q_UNUSED(source); result = QJsonValue(QJsonValue::Null); - return true;); + return true; + ); + QMETATYPE_CONVERTER(Nullptr, QJsonValue, + result = nullptr; + return source.isNull(); + ); QMETATYPE_CONVERTER(QJsonValue, Bool, result = QJsonValue(source); return true;); @@ -1842,6 +1851,13 @@ bool QMetaType::convert(const void *from, int fromTypeId, void *to, int toTypeId QMetaType toType(toTypeId); if (toType.flags() & QMetaType::IsEnumeration) return convertToEnum(from, fromTypeId, to, toType); + if (toTypeId == Nullptr) { + *static_cast<std::nullptr_t *>(to) = nullptr; + if (fromType.flags() & QMetaType::IsPointer) { + if (*static_cast<const void * const *>(from) == nullptr) + return true; + } + } return false; } |