diff options
author | Marc Mutz <marc.mutz@qt.io> | 2022-06-20 19:40:46 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2022-06-22 11:00:29 +0000 |
commit | 0f942880ee7a0adabb63bdbdb200833adb56eb30 (patch) | |
tree | b04e55e97df49d6d8cfa1959d9ac5db48b9603e7 | |
parent | 88be6d9bc75002f77b61ffb4cfa450b37b89a1ef (diff) |
QModbusPdu hierarchy: De-inline dtors of polymorphic classes
... fixing Clang -Wweak-vtables warnings, which we'll soon add to
headersclean.
Pick-to: 6.4
Task-number: QTBUG-45582
Change-Id: I3b768548074236b8e3dd22588ef43f8e5d48def9
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
-rw-r--r-- | src/serialbus/qmodbuspdu.cpp | 20 | ||||
-rw-r--r-- | src/serialbus/qmodbuspdu.h | 25 |
2 files changed, 34 insertions, 11 deletions
diff --git a/src/serialbus/qmodbuspdu.cpp b/src/serialbus/qmodbuspdu.cpp index d39d9e5..c008bf7 100644 --- a/src/serialbus/qmodbuspdu.cpp +++ b/src/serialbus/qmodbuspdu.cpp @@ -272,6 +272,8 @@ static QDataStream &pduFromStream(QDataStream &stream, Type type, QModbusPdu *pd Destroys a QModbusPdu. */ +QModbusPdu::~QModbusPdu() + = default; /*! \fn QModbusPdu::QModbusPdu(const QModbusPdu &other) @@ -510,6 +512,12 @@ QDataStream &operator<<(QDataStream &stream, const QModbusPdu &pdu) */ /*! + \internal +*/ +QModbusRequest::~QModbusRequest() + = default; + +/*! Returns the expected minimum data size for \a request based on the request's function code; \c {-1} if the function code is not known. */ @@ -666,6 +674,12 @@ QDataStream &operator>>(QDataStream &stream, QModbusRequest &pdu) */ /*! + \internal +*/ +QModbusResponse::~QModbusResponse() + = default; + +/*! Returns the expected minimum data size for \a response based on the response's function code; \c {-1} if the function code is not known. */ @@ -826,6 +840,12 @@ QDataStream &operator>>(QDataStream &stream, QModbusResponse &pdu) */ /*! + \internal +*/ +QModbusExceptionResponse::~QModbusExceptionResponse() + = default; + +/*! \fn void QModbusExceptionResponse::setFunctionCode(FunctionCode c) Sets the response's function code to \a c. diff --git a/src/serialbus/qmodbuspdu.h b/src/serialbus/qmodbuspdu.h index a7333fa..60aa6ed 100644 --- a/src/serialbus/qmodbuspdu.h +++ b/src/serialbus/qmodbuspdu.h @@ -11,7 +11,7 @@ QT_BEGIN_NAMESPACE -class QModbusPdu +class Q_SERIALBUS_EXPORT QModbusPdu { public: enum ExceptionCode { @@ -53,7 +53,7 @@ public: }; QModbusPdu() = default; - virtual ~QModbusPdu() = default; + virtual ~QModbusPdu(); bool isValid() const { return (m_code >= ReadCoils && m_code < UndefinedFunctionCode) @@ -158,7 +158,7 @@ private: Q_SERIALBUS_EXPORT QDebug operator<<(QDebug debug, const QModbusPdu &pdu); Q_SERIALBUS_EXPORT QDataStream &operator<<(QDataStream &stream, const QModbusPdu &pdu); -class QModbusRequest : public QModbusPdu +class Q_SERIALBUS_EXPORT QModbusRequest : public QModbusPdu { public: QModbusRequest() = default; @@ -169,12 +169,13 @@ public: explicit QModbusRequest(FunctionCode code, const QByteArray &newData = QByteArray()) : QModbusPdu(code, newData) {} + ~QModbusRequest() override; - Q_SERIALBUS_EXPORT static int minimumDataSize(const QModbusRequest &pdu); - Q_SERIALBUS_EXPORT static int calculateDataSize(const QModbusRequest &pdu); + static int minimumDataSize(const QModbusRequest &pdu); + static int calculateDataSize(const QModbusRequest &pdu); using CalcFuncPtr = decltype(&calculateDataSize); - Q_SERIALBUS_EXPORT static void registerDataSizeCalculator(FunctionCode fc, CalcFuncPtr func); + static void registerDataSizeCalculator(FunctionCode fc, CalcFuncPtr func); template <typename ... Args> QModbusRequest(FunctionCode code, Args ... newData) @@ -185,7 +186,7 @@ Q_SERIALBUS_EXPORT QDataStream &operator>>(QDataStream &stream, QModbusRequest & inline QDataStream &operator<<(QDataStream &stream, const QModbusRequest &pdu) { return stream << static_cast<const QModbusPdu &>(pdu); } -class QModbusResponse : public QModbusPdu +class Q_SERIALBUS_EXPORT QModbusResponse : public QModbusPdu { public: QModbusResponse() = default; @@ -196,12 +197,13 @@ public: explicit QModbusResponse(FunctionCode code, const QByteArray &newData = QByteArray()) : QModbusPdu(code, newData) {} + ~QModbusResponse() override; - Q_SERIALBUS_EXPORT static int minimumDataSize(const QModbusResponse &pdu); - Q_SERIALBUS_EXPORT static int calculateDataSize(const QModbusResponse &pdu); + static int minimumDataSize(const QModbusResponse &pdu); + static int calculateDataSize(const QModbusResponse &pdu); using CalcFuncPtr = decltype(&calculateDataSize); - Q_SERIALBUS_EXPORT static void registerDataSizeCalculator(FunctionCode fc, CalcFuncPtr func); + static void registerDataSizeCalculator(FunctionCode fc, CalcFuncPtr func); template <typename ... Args> QModbusResponse(FunctionCode code, Args ... newData) @@ -209,7 +211,7 @@ public: {} }; -class QModbusExceptionResponse : public QModbusResponse +class Q_SERIALBUS_EXPORT QModbusExceptionResponse : public QModbusResponse { public: QModbusExceptionResponse() = default; @@ -219,6 +221,7 @@ public: QModbusExceptionResponse(FunctionCode fc, ExceptionCode ec) : QModbusResponse(FunctionCode(quint8(fc) | ExceptionByte), static_cast<quint8> (ec)) {} + ~QModbusExceptionResponse() override; void setFunctionCode(FunctionCode c) override { QModbusPdu::setFunctionCode(FunctionCode(quint8(c) | ExceptionByte)); |