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/qmetatype.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/qmetatype.cpp')
-rw-r--r-- | src/corelib/kernel/qmetatype.cpp | 40 |
1 files changed, 29 insertions, 11 deletions
diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index 4bbc228a9e..843274df3a 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -949,6 +949,8 @@ static const struct : QMetaTypeModuleHelper QMETATYPE_CONVERTER_ASSIGN(To, ULong); \ QMETATYPE_CONVERTER_ASSIGN(To, LongLong); \ QMETATYPE_CONVERTER_ASSIGN(To, ULongLong); \ + QMETATYPE_CONVERTER(To, Float, result = qRound64(source); return true;); \ + QMETATYPE_CONVERTER(To, Double, result = qRound64(source); return true;); \ QMETATYPE_CONVERTER(To, QChar, result = source.unicode(); return true;); \ QMETATYPE_CONVERTER(To, QString, \ bool ok = false; \ @@ -972,18 +974,32 @@ static const struct : QMetaTypeModuleHelper ); \ CONVERT_CBOR_AND_JSON(To) - QMETATYPE_CONVERTER(To, QCborValue, \ - if (!source.isInteger() && !source.isDouble()) \ - return false; \ - result = source.toInteger(); \ - return false; \ +#define FLOAT_CONVERTER(To) \ + QMETATYPE_CONVERTER_ASSIGN(To, Bool); \ + QMETATYPE_CONVERTER_ASSIGN(To, Char); \ + QMETATYPE_CONVERTER_ASSIGN(To, UChar); \ + QMETATYPE_CONVERTER_ASSIGN(To, SChar); \ + QMETATYPE_CONVERTER_ASSIGN(To, Short); \ + QMETATYPE_CONVERTER_ASSIGN(To, UShort); \ + QMETATYPE_CONVERTER_ASSIGN(To, Int); \ + QMETATYPE_CONVERTER_ASSIGN(To, UInt); \ + QMETATYPE_CONVERTER_ASSIGN(To, Long); \ + QMETATYPE_CONVERTER_ASSIGN(To, ULong); \ + QMETATYPE_CONVERTER_ASSIGN(To, LongLong); \ + QMETATYPE_CONVERTER_ASSIGN(To, ULongLong); \ + QMETATYPE_CONVERTER_ASSIGN(To, Float); \ + QMETATYPE_CONVERTER_ASSIGN(To, Double); \ + QMETATYPE_CONVERTER(To, QString, \ + bool ok = false; \ + result = source.toDouble(&ok); \ + return ok; \ ); \ - QMETATYPE_CONVERTER(To, QJsonValue, \ - if (source.isDouble()) \ - return false; \ - result = source.toInteger(); \ - return false; \ - ) + QMETATYPE_CONVERTER(To, QByteArray, \ + bool ok = false; \ + result = source.toDouble(&ok); \ + return ok; \ + ); \ + CONVERT_CBOR_AND_JSON(To) switch (makePair(toTypeId, fromTypeId)) { @@ -1000,6 +1016,8 @@ static const struct : QMetaTypeModuleHelper INTEGRAL_CONVERTER(ULong); INTEGRAL_CONVERTER(LongLong); INTEGRAL_CONVERTER(ULongLong); + FLOAT_CONVERTER(Float); + FLOAT_CONVERTER(Double); #ifndef QT_BOOTSTRAPPED QMETATYPE_CONVERTER_ASSIGN(QUrl, QString); |