summaryrefslogtreecommitdiffstats
path: root/src/nfc/qndefmessage.h
diff options
context:
space:
mode:
authorIevgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>2022-05-20 00:36:28 +0200
committerIevgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>2022-05-20 10:45:19 +0200
commit4b70b72881a05a3a44b5a89a3fc9d75c919319fe (patch)
tree5e1c7ae98284ffe8416405d07e1f389c719533d2 /src/nfc/qndefmessage.h
parent02ccd2460c7ba2f27e8a2021b1f911a9e16bf703 (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.h36
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