summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2022-06-20 19:40:46 +0200
committerMarc Mutz <marc.mutz@qt.io>2022-06-22 11:00:29 +0000
commit0f942880ee7a0adabb63bdbdb200833adb56eb30 (patch)
treeb04e55e97df49d6d8cfa1959d9ac5db48b9603e7
parent88be6d9bc75002f77b61ffb4cfa450b37b89a1ef (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.cpp20
-rw-r--r--src/serialbus/qmodbuspdu.h25
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));