summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qvariant.h
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.h
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.h')
-rw-r--r--src/corelib/kernel/qvariant.h50
1 files changed, 31 insertions, 19 deletions
diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h
index d1a87813e4..7074c69e93 100644
--- a/src/corelib/kernel/qvariant.h
+++ b/src/corelib/kernel/qvariant.h
@@ -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(); }