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>bb10
parent
211f13b089
commit
de7894ce3c
|
|
@ -293,6 +293,26 @@ int QMetaType::idHelper() const
|
|||
return registerHelper(d_ptr);
|
||||
}
|
||||
|
||||
#include "qvariant.h"
|
||||
|
||||
// these implementations aren't as efficient as they used to be prior to
|
||||
// replacement, but there's no way to call the ambiguous overload
|
||||
QVariant::QVariant(const QUuid &uuid) : QVariant(QVariant::fromValue(uuid)) {}
|
||||
#ifndef QT_NO_GEOM_VARIANT
|
||||
#include "qline.h"
|
||||
#include "qpoint.h"
|
||||
#include "qrect.h"
|
||||
#include "qsize.h"
|
||||
QVariant::QVariant(const QPoint &pt) : QVariant(QVariant::fromValue(pt)) {}
|
||||
QVariant::QVariant(const QPointF &pt) : QVariant(QVariant::fromValue(pt)) {}
|
||||
QVariant::QVariant(const QRect &r) : QVariant(QVariant::fromValue(r)) {}
|
||||
QVariant::QVariant(const QRectF &r) : QVariant(QVariant::fromValue(r)) {}
|
||||
QVariant::QVariant(const QLine &l) : QVariant(QVariant::fromValue(l)) {}
|
||||
QVariant::QVariant(const QLineF &l) : QVariant(QVariant::fromValue(l)) {}
|
||||
QVariant::QVariant(const QSize &s) : QVariant(QVariant::fromValue(s)) {}
|
||||
QVariant::QVariant(const QSizeF &s) : QVariant(QVariant::fromValue(s)) {}
|
||||
#endif
|
||||
|
||||
#include "qxmlstream.h"
|
||||
|
||||
QXmlStreamReader::QXmlStreamReader(const QByteArray &data)
|
||||
|
|
|
|||
|
|
@ -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) {}
|
||||
|
|
|
|||
|
|
@ -196,13 +196,13 @@ public:
|
|||
explicit QVariant(QMetaType type, const void *copy = nullptr);
|
||||
QVariant(const QVariant &other);
|
||||
|
||||
QVariant(int i);
|
||||
QVariant(uint ui);
|
||||
QVariant(qlonglong ll);
|
||||
QVariant(qulonglong ull);
|
||||
QVariant(bool b);
|
||||
QVariant(double d);
|
||||
QVariant(float f);
|
||||
QVariant(int i) noexcept;
|
||||
QVariant(uint ui) noexcept;
|
||||
QVariant(qlonglong ll) noexcept;
|
||||
QVariant(qulonglong ull) noexcept;
|
||||
QVariant(bool b) noexcept;
|
||||
QVariant(double d) noexcept;
|
||||
QVariant(float f) noexcept;
|
||||
#ifndef QT_NO_CAST_FROM_ASCII
|
||||
QT_ASCII_CAST_WARN QVariant(const char *str)
|
||||
: QVariant(QString::fromUtf8(str))
|
||||
|
|
@ -214,22 +214,22 @@ public:
|
|||
QVariant(const QString &string);
|
||||
QVariant(QLatin1StringView string);
|
||||
QVariant(const QStringList &stringlist);
|
||||
QVariant(QChar qchar);
|
||||
QVariant(QDate date);
|
||||
QVariant(QTime time);
|
||||
QVariant(QChar qchar) noexcept;
|
||||
QVariant(QDate date) noexcept;
|
||||
QVariant(QTime time) noexcept;
|
||||
QVariant(const QDateTime &datetime);
|
||||
QVariant(const QList<QVariant> &list);
|
||||
QVariant(const QMap<QString, QVariant> &map);
|
||||
QVariant(const QHash<QString, QVariant> &hash);
|
||||
#ifndef QT_NO_GEOM_VARIANT
|
||||
QVariant(const QSize &size);
|
||||
QVariant(const QSizeF &size);
|
||||
QVariant(const QPoint &pt);
|
||||
QVariant(const QPointF &pt);
|
||||
QVariant(const QLine &line);
|
||||
QVariant(const QLineF &line);
|
||||
QVariant(const QRect &rect);
|
||||
QVariant(const QRectF &rect);
|
||||
QVariant(QSize size) noexcept;
|
||||
QVariant(QSizeF size) noexcept;
|
||||
QVariant(QPoint pt) noexcept;
|
||||
QVariant(QPointF pt) noexcept;
|
||||
QVariant(QLine line) noexcept;
|
||||
QVariant(QLineF line) noexcept(sizeof(qreal) * 4 <= Private::MaxInternalSize);
|
||||
QVariant(QRect rect) noexcept;
|
||||
QVariant(QRectF rect) noexcept(sizeof(qreal) * 4 <= Private::MaxInternalSize);
|
||||
#endif
|
||||
QVariant(const QLocale &locale);
|
||||
#if QT_CONFIG(regularexpression)
|
||||
|
|
@ -238,7 +238,7 @@ public:
|
|||
#if QT_CONFIG(easingcurve)
|
||||
QVariant(const QEasingCurve &easing);
|
||||
#endif
|
||||
QVariant(const QUuid &uuid);
|
||||
QVariant(QUuid uuid) noexcept;
|
||||
#ifndef QT_BOOTSTRAPPED
|
||||
QVariant(const QUrl &url);
|
||||
QVariant(const QJsonValue &jsonValue);
|
||||
|
|
@ -259,6 +259,18 @@ public:
|
|||
QVariant(const volatile void *) = delete;
|
||||
#endif
|
||||
|
||||
#if QT_CORE_REMOVED_SINCE(6, 5)
|
||||
QVariant(const QSize &size);
|
||||
QVariant(const QSizeF &size);
|
||||
QVariant(const QPoint &pt);
|
||||
QVariant(const QPointF &pt);
|
||||
QVariant(const QLine &line);
|
||||
QVariant(const QLineF &line);
|
||||
QVariant(const QRect &rect);
|
||||
QVariant(const QRectF &rect);
|
||||
QVariant(const QUuid &uuid);
|
||||
#endif
|
||||
|
||||
QVariant& operator=(const QVariant &other);
|
||||
inline QVariant(QVariant &&other) noexcept : d(other.d)
|
||||
{ other.d = Private(); }
|
||||
|
|
|
|||
Loading…
Reference in New Issue