diff options
author | Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> | 2022-05-20 00:36:28 +0200 |
---|---|---|
committer | Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> | 2022-05-20 10:45:19 +0200 |
commit | 4b70b72881a05a3a44b5a89a3fc9d75c919319fe (patch) | |
tree | 5e1c7ae98284ffe8416405d07e1f389c719533d2 /src/nfc/qndefmessage.h | |
parent | 02ccd2460c7ba2f27e8a2021b1f911a9e16bf703 (diff) |
QNdefMessage: un-export the class
QNdefMessage inherits QList publically, but QList isn't designed to be
inherited by an exported class, because we make changes to QList API
assuming that its an inline-only class and not exported. However,
exporting a derived class means QList API is exported, too.
Fix by un-exporting the class, exporting individual functions instead,
the inline ones only for Qt 6.
This is BiC, too, because the previously-exported QList API no longer
is exported, but at least this will prevent further BC breaks going
forward.
Pick-to: 6.3 6.2
Fixes: QTBUG-102367
Change-Id: I4d0073c9769e50d9c62c11ecc3e3937cce092fa1
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Diffstat (limited to 'src/nfc/qndefmessage.h')
-rw-r--r-- | src/nfc/qndefmessage.h | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/src/nfc/qndefmessage.h b/src/nfc/qndefmessage.h index 39101c99..38d96f61 100644 --- a/src/nfc/qndefmessage.h +++ b/src/nfc/qndefmessage.h @@ -48,23 +48,35 @@ QT_BEGIN_NAMESPACE -class Q_NFC_EXPORT QNdefMessage : public QList<QNdefRecord> +// This class used to be exported exposing QList methods, see QTBUG-102367. +#if defined(QT_BUILD_NFC_LIB) +# define Q_NFC_EXPORT_COMPAT QT6_ONLY(Q_NFC_EXPORT) +#else +# define Q_NFC_EXPORT_COMPAT +#endif + +class QNdefMessage : public QList<QNdefRecord> { public: - inline QNdefMessage() { } - inline explicit QNdefMessage(const QNdefRecord &record) { append(record); } - inline QNdefMessage(const QNdefMessage &message) : QList<QNdefRecord>(message) { } - inline QNdefMessage(const QList<QNdefRecord> &records) : QList<QNdefRecord>(records) { } + Q_NFC_EXPORT_COMPAT + QNdefMessage() = default; + Q_NFC_EXPORT_COMPAT + explicit QNdefMessage(const QNdefRecord &record) { append(record); } + Q_NFC_EXPORT_COMPAT + QNdefMessage(const QNdefMessage &message) = default; + Q_NFC_EXPORT_COMPAT + QNdefMessage(const QList<QNdefRecord> &records) : QList<QNdefRecord>(records) { } + + Q_NFC_EXPORT_COMPAT + QNdefMessage &operator=(const QNdefMessage &other) = default; + Q_NFC_EXPORT_COMPAT + QNdefMessage &operator=(QNdefMessage &&other) noexcept = default; - QNdefMessage &operator=(const QNdefMessage &other) - { QList<QNdefRecord>::operator=(other); return *this; } - QNdefMessage &operator=(QNdefMessage &&other) noexcept - { QList<QNdefRecord>::operator=(std::move(other)); return *this; } - bool operator==(const QNdefMessage &other) const; + Q_NFC_EXPORT bool operator==(const QNdefMessage &other) const; - QByteArray toByteArray() const; + Q_NFC_EXPORT QByteArray toByteArray() const; - static QNdefMessage fromByteArray(const QByteArray &message); + Q_NFC_EXPORT static QNdefMessage fromByteArray(const QByteArray &message); }; QT_END_NAMESPACE |