summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qvariant.cpp
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2022-07-22 16:32:46 -0700
committerThiago Macieira <thiago.macieira@intel.com>2022-07-27 14:51:11 -0700
commitde7894ce3c60154cd3c44640c1734c6988d2afea (patch)
treea5d7d30daf29a1360ae60acec36a4ac87416c632 /src/corelib/kernel/qvariant.cpp
parent211f13b089383a84098093f7005eb71f1adfc5e5 (diff)
QVariant: update constructors for trivially copyable types
Make them all noexcept and ensure they are all passed by value. Unfortunately for QRectF and QLineF, they're too big when qreal==double, so QVariant needs to allocate memory itself. Strictly speaking, they're too big for passing by value too, but the codegen is identical, so we may as well. For Qt 7, enlarging QVariant::Private would be a good idea. Change-Id: I3859764fed084846bcb0fffd17044ac379b3c1d2 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Lars Knoll <lars.knoll@gmail.com>
Diffstat (limited to 'src/corelib/kernel/qvariant.cpp')
-rw-r--r--src/corelib/kernel/qvariant.cpp78
1 files changed, 40 insertions, 38 deletions
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp
index 7b79501b1e..4628bd7d6f 100644
--- a/src/corelib/kernel/qvariant.cpp
+++ b/src/corelib/kernel/qvariant.cpp
@@ -625,13 +625,13 @@ QVariant::QVariant(const QVariant &p)
*/
/*!
- \fn QVariant::QVariant(QDate val)
+ \fn QVariant::QVariant(QDate val) noexcept
Constructs a new variant with a date value, \a val.
*/
/*!
- \fn QVariant::QVariant(QTime val)
+ \fn QVariant::QVariant(QTime val) noexcept
Constructs a new variant with a time value, \a val.
*/
@@ -651,7 +651,7 @@ QVariant::QVariant(const QVariant &p)
/*!
\since 5.0
- \fn QVariant::QVariant(const QUuid &val)
+ \fn QVariant::QVariant(QUuid val) noexcept
Constructs a new variant with an uuid value, \a val.
*/
@@ -711,49 +711,49 @@ QVariant::QVariant(const QVariant &p)
*/
/*!
- \fn QVariant::QVariant(const QPoint &val)
+ \fn QVariant::QVariant(QPoint val) noexcept
Constructs a new variant with a point value of \a val.
*/
/*!
- \fn QVariant::QVariant(const QPointF &val)
+ \fn QVariant::QVariant(QPointF val) noexcept
Constructs a new variant with a point value of \a val.
*/
/*!
- \fn QVariant::QVariant(const QRectF &val)
+ \fn QVariant::QVariant(QRectF val)
Constructs a new variant with a rect value of \a val.
*/
/*!
- \fn QVariant::QVariant(const QLineF &val)
+ \fn QVariant::QVariant(QLineF val) noexcept
Constructs a new variant with a line value of \a val.
*/
/*!
- \fn QVariant::QVariant(const QLine &val)
+ \fn QVariant::QVariant(QLine val) noexcept
Constructs a new variant with a line value of \a val.
*/
/*!
- \fn QVariant::QVariant(const QRect &val)
+ \fn QVariant::QVariant(QRect val) noexcept
Constructs a new variant with a rect value of \a val.
*/
/*!
- \fn QVariant::QVariant(const QSize &val)
+ \fn QVariant::QVariant(QSize val) noexcept
Constructs a new variant with a size value of \a val.
*/
/*!
- \fn QVariant::QVariant(const QSizeF &val)
+ \fn QVariant::QVariant(QSizeF val) noexcept
Constructs a new variant with a size value of \a val.
*/
@@ -765,44 +765,44 @@ QVariant::QVariant(const QVariant &p)
*/
/*!
- \fn QVariant::QVariant(int val)
+ \fn QVariant::QVariant(int val) noexcept
Constructs a new variant with an integer value, \a val.
*/
/*!
- \fn QVariant::QVariant(uint val)
+ \fn QVariant::QVariant(uint val) noexcept
Constructs a new variant with an unsigned integer value, \a val.
*/
/*!
- \fn QVariant::QVariant(qlonglong val)
+ \fn QVariant::QVariant(qlonglong val) noexcept
Constructs a new variant with a long long integer value, \a val.
*/
/*!
- \fn QVariant::QVariant(qulonglong val)
+ \fn QVariant::QVariant(qulonglong val) noexcept
Constructs a new variant with an unsigned long long integer value, \a val.
*/
/*!
- \fn QVariant::QVariant(bool val)
+ \fn QVariant::QVariant(bool val) noexcept
Constructs a new variant with a boolean value, \a val.
*/
/*!
- \fn QVariant::QVariant(double val)
+ \fn QVariant::QVariant(double val) noexcept
Constructs a new variant with a floating point value, \a val.
*/
/*!
- \fn QVariant::QVariant(float val)
+ \fn QVariant::QVariant(float val) noexcept
Constructs a new variant with a floating point value, \a val.
\since 4.6
@@ -815,7 +815,7 @@ QVariant::QVariant(const QVariant &p)
*/
/*!
- \fn QVariant::QVariant(QChar c)
+ \fn QVariant::QVariant(QChar c) noexcept
Constructs a new variant with a char value, \a c.
*/
@@ -867,22 +867,22 @@ QVariant::QVariant(QMetaType type, const void *copy) : d(type.iface())
d = {};
}
-QVariant::QVariant(int val) : d(std::piecewise_construct_t{}, val) {}
-QVariant::QVariant(uint val) : d(std::piecewise_construct_t{}, val) {}
-QVariant::QVariant(qlonglong val) : d(std::piecewise_construct_t{}, val) {}
-QVariant::QVariant(qulonglong val) : d(std::piecewise_construct_t{}, val) {}
-QVariant::QVariant(bool val) : d(std::piecewise_construct_t{}, val) {}
-QVariant::QVariant(double val) : d(std::piecewise_construct_t{}, val) {}
-QVariant::QVariant(float val) : d(std::piecewise_construct_t{}, val) {}
+QVariant::QVariant(int val) noexcept : d(std::piecewise_construct_t{}, val) {}
+QVariant::QVariant(uint val) noexcept : d(std::piecewise_construct_t{}, val) {}
+QVariant::QVariant(qlonglong val) noexcept : d(std::piecewise_construct_t{}, val) {}
+QVariant::QVariant(qulonglong val) noexcept : d(std::piecewise_construct_t{}, val) {}
+QVariant::QVariant(bool val) noexcept : d(std::piecewise_construct_t{}, val) {}
+QVariant::QVariant(double val) noexcept : d(std::piecewise_construct_t{}, val) {}
+QVariant::QVariant(float val) noexcept : d(std::piecewise_construct_t{}, val) {}
QVariant::QVariant(const QByteArray &val) : d(std::piecewise_construct_t{}, val) {}
QVariant::QVariant(const QBitArray &val) : d(std::piecewise_construct_t{}, val) {}
QVariant::QVariant(const QString &val) : d(std::piecewise_construct_t{}, val) {}
-QVariant::QVariant(QChar val) : d(std::piecewise_construct_t{}, val) {}
+QVariant::QVariant(QChar val) noexcept : d(std::piecewise_construct_t{}, val) {}
QVariant::QVariant(const QStringList &val) : d(std::piecewise_construct_t{}, val) {}
-QVariant::QVariant(QDate val) : d(std::piecewise_construct_t{}, val) {}
-QVariant::QVariant(QTime val) : d(std::piecewise_construct_t{}, val) {}
+QVariant::QVariant(QDate val) noexcept : d(std::piecewise_construct_t{}, val) {}
+QVariant::QVariant(QTime val) noexcept : d(std::piecewise_construct_t{}, val) {}
QVariant::QVariant(const QDateTime &val) : d(std::piecewise_construct_t{}, val) {}
QVariant::QVariant(const QList<QVariant> &list) : d(std::piecewise_construct_t{}, list) {}
@@ -895,14 +895,16 @@ QVariant::QVariant(QLatin1StringView val) : QVariant(QString(val)) {}
QVariant::QVariant(const QEasingCurve &val) : d(std::piecewise_construct_t{}, val) {}
#endif
#ifndef QT_NO_GEOM_VARIANT
-QVariant::QVariant(const QPoint &pt) : d(std::piecewise_construct_t{}, pt) {}
-QVariant::QVariant(const QPointF &pt) : d(std::piecewise_construct_t{}, pt) {}
-QVariant::QVariant(const QRect &r) : d(std::piecewise_construct_t{}, r) {}
-QVariant::QVariant(const QRectF &r) : d(std::piecewise_construct_t{}, r) {}
-QVariant::QVariant(const QLine &l) : d(std::piecewise_construct_t{}, l) {}
-QVariant::QVariant(const QLineF &l) : d(std::piecewise_construct_t{}, l) {}
-QVariant::QVariant(const QSize &s) : d(std::piecewise_construct_t{}, s) {}
-QVariant::QVariant(const QSizeF &s) : d(std::piecewise_construct_t{}, s) {}
+QVariant::QVariant(QPoint pt) noexcept : d(std::piecewise_construct_t{}, pt) {}
+QVariant::QVariant(QPointF pt) noexcept : d(std::piecewise_construct_t{}, pt) {}
+QVariant::QVariant(QRect r) noexcept : d(std::piecewise_construct_t{}, r) {}
+QVariant::QVariant(QRectF r) noexcept(sizeof(qreal) * 4 <= Private::MaxInternalSize)
+ : d(std::piecewise_construct_t{}, r) {}
+QVariant::QVariant(QLine l) noexcept : d(std::piecewise_construct_t{}, l) {}
+QVariant::QVariant(QLineF l) noexcept(sizeof(qreal) * 4 <= Private::MaxInternalSize)
+ : d(std::piecewise_construct_t{}, l) {}
+QVariant::QVariant(QSize s) noexcept : d(std::piecewise_construct_t{}, s) {}
+QVariant::QVariant(QSizeF s) noexcept : d(std::piecewise_construct_t{}, s) {}
#endif
#ifndef QT_BOOTSTRAPPED
QVariant::QVariant(const QUrl &u) : d(std::piecewise_construct_t{}, u) {}
@@ -911,7 +913,7 @@ QVariant::QVariant(const QLocale &l) : d(std::piecewise_construct_t{}, l) {}
#if QT_CONFIG(regularexpression)
QVariant::QVariant(const QRegularExpression &re) : d(std::piecewise_construct_t{}, re) {}
#endif // QT_CONFIG(regularexpression)
-QVariant::QVariant(const QUuid &uuid) : d(std::piecewise_construct_t{}, uuid) {}
+QVariant::QVariant(QUuid uuid) noexcept : d(std::piecewise_construct_t{}, uuid) {}
#ifndef QT_BOOTSTRAPPED
QVariant::QVariant(const QJsonValue &jsonValue) : d(std::piecewise_construct_t{}, jsonValue) {}
QVariant::QVariant(const QJsonObject &jsonObject) : d(std::piecewise_construct_t{}, jsonObject) {}