summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2023-01-24 16:16:32 +0100
committerIvan Solovev <ivan.solovev@qt.io>2023-01-26 15:12:58 +0100
commit8db3c1142248e4564e8b90db61ad1bdf13164453 (patch)
tree0074a96dd797518d2f952c9f92ba5d30bfcbb5ff
parent887beaae54715d0ffe0601a62f6e42bebc2bb45b (diff)
Do not provide {in}equality opeartors for CAN parser value classes
These operators are only needed for tests. Provide helper headers with proper implementations to avoid code duplication, because each pair of operators is used in more than one test. Noticed during Qt 6.5 API review. Pick-to: 6.5 Change-Id: Icf36ad7a7fb3e9230154933593470a6c84c16901 Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
-rw-r--r--src/serialbus/qcanmessagedescription.cpp24
-rw-r--r--src/serialbus/qcanmessagedescription.h11
-rw-r--r--src/serialbus/qcansignaldescription.cpp54
-rw-r--r--src/serialbus/qcansignaldescription.h11
-rw-r--r--src/serialbus/qcanuniqueiddescription.cpp22
-rw-r--r--src/serialbus/qcanuniqueiddescription.h11
-rw-r--r--tests/auto/qcandbcfileparser/CMakeLists.txt4
-rw-r--r--tests/auto/qcandbcfileparser/tst_qcandbcfileparser.cpp3
-rw-r--r--tests/auto/qcanmessagedescription/CMakeLists.txt4
-rw-r--r--tests/auto/qcanmessagedescription/tst_qcanmessagedescription.cpp2
-rw-r--r--tests/auto/qcansignaldescription/CMakeLists.txt4
-rw-r--r--tests/auto/qcansignaldescription/tst_qcansignaldescription.cpp2
-rw-r--r--tests/auto/qcanuniqueiddescription/CMakeLists.txt4
-rw-r--r--tests/auto/qcanuniqueiddescription/tst_qcanuniqueiddescription.cpp2
-rw-r--r--tests/auto/shared/qcanmessagedescription_helpers.h32
-rw-r--r--tests/auto/shared/qcansignaldescription_helpers.h62
-rw-r--r--tests/auto/shared/qcanuniqueiddescription_helpers.h28
17 files changed, 147 insertions, 133 deletions
diff --git a/src/serialbus/qcanmessagedescription.cpp b/src/serialbus/qcanmessagedescription.cpp
index d1b0f7c..bbb5d85 100644
--- a/src/serialbus/qcanmessagedescription.cpp
+++ b/src/serialbus/qcanmessagedescription.cpp
@@ -100,20 +100,6 @@ QCanMessageDescription &QCanMessageDescription::operator=(const QCanMessageDescr
*/
/*!
- \fn bool QCanMessageDescription::operator==(const QCanMessageDescription &lhs, const QCanMessageDescription &rhs)
-
- Returns \c true if all of the \a lhs object's values are the same as those
- of \a rhs. Otherwise returns \c false.
-*/
-
-/*!
- \fn bool QCanMessageDescription::operator!=(const QCanMessageDescription &lhs, const QCanMessageDescription &rhs)
-
- Returns \c true if any of the \a lhs object's values are not the same as
- those of \a rhs. Otherwise returns \c false.
-*/
-
-/*!
Returns \c true when the message description is valid and \c false
otherwise.
@@ -334,16 +320,6 @@ void QCanMessageDescription::setSignalDescriptions(const QList<QCanSignalDescrip
d->messageSignals.insert(desc.name(), desc);
}
-bool QCanMessageDescription::equals(const QCanMessageDescription &lhs, const QCanMessageDescription &rhs)
-{
- return lhs.d->name == rhs.d->name
- && lhs.d->transmitter == rhs.d->transmitter
- && lhs.d->comment == rhs.d->comment
- && lhs.d->id == rhs.d->id
- && lhs.d->size == rhs.d->size
- && lhs.d->messageSignals == rhs.d->messageSignals;
-}
-
#ifndef QT_NO_DEBUG_STREAM
QDebug QCanMessageDescription::debugStreaming(QDebug dbg, const QCanMessageDescription &msg)
{
diff --git a/src/serialbus/qcanmessagedescription.h b/src/serialbus/qcanmessagedescription.h
index 36b8993..bb9140d 100644
--- a/src/serialbus/qcanmessagedescription.h
+++ b/src/serialbus/qcanmessagedescription.h
@@ -28,15 +28,6 @@ public:
QCanMessageDescription &operator=(const QCanMessageDescription &other);
QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QCanMessageDescription)
- friend bool operator==(const QCanMessageDescription &lhs, const QCanMessageDescription &rhs)
- {
- return equals(lhs, rhs);
- }
- friend bool operator!=(const QCanMessageDescription &lhs, const QCanMessageDescription &rhs)
- {
- return !equals(lhs, rhs);
- }
-
void swap(QCanMessageDescription &other) noexcept { d.swap(other.d); }
bool isValid() const;
@@ -66,8 +57,6 @@ private:
QExplicitlySharedDataPointer<QCanMessageDescriptionPrivate> d;
friend class QCanMessageDescriptionPrivate;
- static bool equals(const QCanMessageDescription &lhs, const QCanMessageDescription &rhs);
-
friend void qHash(const QCanMessageDescription &desc, size_t seed) noexcept = delete;
#ifndef QT_NO_DEBUG_STREAM
diff --git a/src/serialbus/qcansignaldescription.cpp b/src/serialbus/qcansignaldescription.cpp
index 113e736..0df6a4a 100644
--- a/src/serialbus/qcansignaldescription.cpp
+++ b/src/serialbus/qcansignaldescription.cpp
@@ -247,20 +247,6 @@ QCanSignalDescription &QCanSignalDescription::operator=(const QCanSignalDescript
*/
/*!
- \fn bool QCanSignalDescription::operator==(const QCanSignalDescription &lhs, const QCanSignalDescription &rhs)
-
- Returns \c true if all of the \a lhs object's values are the same as those
- of \a rhs. Otherwise returns \c false.
-*/
-
-/*!
- \fn bool QCanSignalDescription::operator!=(const QCanSignalDescription &lhs, const QCanSignalDescription &rhs)
-
- Returns \c true if any of the \a lhs object's values are not the same as
- those of \a rhs. Otherwise returns \c false.
-*/
-
-/*!
Returns \c true when the signal description is valid and \c false otherwise.
A valid signal description \e must fulfill the following conditions:
@@ -776,46 +762,6 @@ void QCanSignalDescription::addMultiplexSignal(const QString &name, const QVaria
d->muxSignals.insert(name, { {value, value} });
}
-// copied from qtbase/src/testlib/qtestcase.cpp
-template <typename T>
-static bool floatingCompare(const T &actual, const T &expected)
-{
- switch (qFpClassify(expected))
- {
- case FP_INFINITE:
- return (expected < 0) == (actual < 0) && qFpClassify(actual) == FP_INFINITE;
- case FP_NAN:
- return qFpClassify(actual) == FP_NAN;
- default:
- if (!qFuzzyIsNull(expected))
- return qFuzzyCompare(actual, expected);
- Q_FALLTHROUGH();
- case FP_SUBNORMAL: // subnormal is always fuzzily null
- case FP_ZERO:
- return qFuzzyIsNull(actual);
- }
-}
-
-bool QCanSignalDescription::equals(const QCanSignalDescription &lhs, const QCanSignalDescription &rhs)
-{
- return lhs.d->name == rhs.d->name
- && lhs.d->unit == rhs.d->unit
- && lhs.d->receiver == rhs.d->receiver
- && lhs.d->comment == rhs.d->comment
- && lhs.d->source == rhs.d->source
- && lhs.d->endian == rhs.d->endian
- && lhs.d->format == rhs.d->format
- && lhs.d->startBit == rhs.d->startBit
- && lhs.d->dataLength == rhs.d->dataLength
- && lhs.d->muxState == rhs.d->muxState
- && lhs.d->muxSignals == rhs.d->muxSignals
- && floatingCompare(lhs.d->factor, rhs.d->factor)
- && floatingCompare(lhs.d->offset, rhs.d->offset)
- && floatingCompare(lhs.d->scaling, rhs.d->scaling)
- && floatingCompare(lhs.d->minimum, rhs.d->minimum)
- && floatingCompare(lhs.d->maximum, rhs.d->maximum);
-}
-
#ifndef QT_NO_DEBUG_STREAM
QDebug QCanSignalDescription::debugStreaming(QDebug dbg, const QCanSignalDescription &sig)
{
diff --git a/src/serialbus/qcansignaldescription.h b/src/serialbus/qcansignaldescription.h
index f31364c..158f254 100644
--- a/src/serialbus/qcansignaldescription.h
+++ b/src/serialbus/qcansignaldescription.h
@@ -54,15 +54,6 @@ public:
QCanSignalDescription &operator=(const QCanSignalDescription &other);
QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QCanSignalDescription)
- friend bool operator==(const QCanSignalDescription &lhs, const QCanSignalDescription &rhs)
- {
- return equals(lhs, rhs);
- }
- friend bool operator!=(const QCanSignalDescription &lhs, const QCanSignalDescription &rhs)
- {
- return !equals(lhs, rhs);
- }
-
void swap(QCanSignalDescription &other) noexcept { d.swap(other.d); }
bool isValid() const;
@@ -120,8 +111,6 @@ private:
QExplicitlySharedDataPointer<QCanSignalDescriptionPrivate> d;
friend class QCanSignalDescriptionPrivate;
- static bool equals(const QCanSignalDescription &lhs, const QCanSignalDescription &rhs);
-
friend void qHash(const QCanSignalDescription &desc, size_t seed) noexcept = delete;
#ifndef QT_NO_DEBUG_STREAM
diff --git a/src/serialbus/qcanuniqueiddescription.cpp b/src/serialbus/qcanuniqueiddescription.cpp
index 3096b05..3ec45b4 100644
--- a/src/serialbus/qcanuniqueiddescription.cpp
+++ b/src/serialbus/qcanuniqueiddescription.cpp
@@ -99,20 +99,6 @@ QCanUniqueIdDescription &QCanUniqueIdDescription::operator=(const QCanUniqueIdDe
*/
/*!
- \fn bool QCanUniqueIdDescription::operator==(const QCanUniqueIdDescription &lhs, const QCanUniqueIdDescription &rhs)
-
- Returns \c true if all of the \a lhs object's values are the same as those
- of \a rhs. Otherwise returns \c false.
-*/
-
-/*!
- \fn bool QCanUniqueIdDescription::operator!=(const QCanUniqueIdDescription &lhs, const QCanUniqueIdDescription &rhs)
-
- Returns \c true if any of the \a lhs object's values are not the same as
- those of \a rhs. Otherwise returns \c false.
-*/
-
-/*!
Returns \c true when this unique identifier description is valid and
\c false otherwise.
@@ -216,14 +202,6 @@ void QCanUniqueIdDescription::setEndian(QSysInfo::Endian endian)
d->endian = endian;
}
-bool QCanUniqueIdDescription::equals(const QCanUniqueIdDescription &lhs, const QCanUniqueIdDescription &rhs)
-{
- return lhs.d->source == rhs.d->source
- && lhs.d->endian == rhs.d->endian
- && lhs.d->startBit == rhs.d->startBit
- && lhs.d->bitLength == rhs.d->bitLength;
-}
-
QCanUniqueIdDescriptionPrivate *QCanUniqueIdDescriptionPrivate::get(const QCanUniqueIdDescription &desc)
{
return desc.d.data();
diff --git a/src/serialbus/qcanuniqueiddescription.h b/src/serialbus/qcanuniqueiddescription.h
index 7b2fa44..213d9ff 100644
--- a/src/serialbus/qcanuniqueiddescription.h
+++ b/src/serialbus/qcanuniqueiddescription.h
@@ -25,15 +25,6 @@ public:
QCanUniqueIdDescription &operator=(const QCanUniqueIdDescription &other);
QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QCanUniqueIdDescription)
- friend bool operator==(const QCanUniqueIdDescription &lhs, const QCanUniqueIdDescription &rhs)
- {
- return equals(lhs, rhs);
- }
- friend bool operator!=(const QCanUniqueIdDescription &lhs, const QCanUniqueIdDescription &rhs)
- {
- return !equals(lhs, rhs);
- }
-
void swap(QCanUniqueIdDescription &other) noexcept { d.swap(other.d); }
bool isValid() const;
@@ -54,8 +45,6 @@ private:
QExplicitlySharedDataPointer<QCanUniqueIdDescriptionPrivate> d;
friend class QCanUniqueIdDescriptionPrivate;
- static bool equals(const QCanUniqueIdDescription &lhs, const QCanUniqueIdDescription &rhs);
-
friend void qHash(const QCanUniqueIdDescription &desc, size_t seed) noexcept = delete;
};
diff --git a/tests/auto/qcandbcfileparser/CMakeLists.txt b/tests/auto/qcandbcfileparser/CMakeLists.txt
index b128938..58a45e7 100644
--- a/tests/auto/qcandbcfileparser/CMakeLists.txt
+++ b/tests/auto/qcandbcfileparser/CMakeLists.txt
@@ -6,9 +6,13 @@ file(GLOB_RECURSE test_data_glob
data/*)
list(APPEND test_data ${test_data_glob})
+get_filename_component(SHARED_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../shared ABSOLUTE)
+
qt_internal_add_test(tst_qcandbcfileparser
SOURCES
tst_qcandbcfileparser.cpp
+ INCLUDE_DIRECTORIES
+ ${SHARED_DIR}
LIBRARIES
Qt::Network
Qt::SerialBus
diff --git a/tests/auto/qcandbcfileparser/tst_qcandbcfileparser.cpp b/tests/auto/qcandbcfileparser/tst_qcandbcfileparser.cpp
index f7e0828..f3ad36c 100644
--- a/tests/auto/qcandbcfileparser/tst_qcandbcfileparser.cpp
+++ b/tests/auto/qcandbcfileparser/tst_qcandbcfileparser.cpp
@@ -8,6 +8,9 @@
#include <QtSerialBus/QCanSignalDescription>
#include <QtSerialBus/QCanUniqueIdDescription>
+#include "qcanmessagedescription_helpers.h"
+#include "qcanuniqueiddescription_helpers.h"
+
QT_USE_NAMESPACE
using namespace Qt::StringLiterals;
diff --git a/tests/auto/qcanmessagedescription/CMakeLists.txt b/tests/auto/qcanmessagedescription/CMakeLists.txt
index 6195312..ce93f50 100644
--- a/tests/auto/qcanmessagedescription/CMakeLists.txt
+++ b/tests/auto/qcanmessagedescription/CMakeLists.txt
@@ -1,9 +1,13 @@
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause
+get_filename_component(SHARED_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../shared ABSOLUTE)
+
qt_internal_add_test(tst_qcanmessagedescription
SOURCES
tst_qcanmessagedescription.cpp
+ INCLUDE_DIRECTORIES
+ ${SHARED_DIR}
LIBRARIES
Qt::Network
Qt::SerialBus
diff --git a/tests/auto/qcanmessagedescription/tst_qcanmessagedescription.cpp b/tests/auto/qcanmessagedescription/tst_qcanmessagedescription.cpp
index d4f5c47..76707ee 100644
--- a/tests/auto/qcanmessagedescription/tst_qcanmessagedescription.cpp
+++ b/tests/auto/qcanmessagedescription/tst_qcanmessagedescription.cpp
@@ -7,6 +7,8 @@
#include <QtSerialBus/qcansignaldescription.h>
#include <QtSerialBus/private/qcanmessagedescription_p.h>
+#include "qcanmessagedescription_helpers.h"
+
QT_USE_NAMESPACE
class tst_QCanMessageDescription : public QObject
diff --git a/tests/auto/qcansignaldescription/CMakeLists.txt b/tests/auto/qcansignaldescription/CMakeLists.txt
index 9a3999d..37ed049 100644
--- a/tests/auto/qcansignaldescription/CMakeLists.txt
+++ b/tests/auto/qcansignaldescription/CMakeLists.txt
@@ -1,9 +1,13 @@
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause
+get_filename_component(SHARED_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../shared ABSOLUTE)
+
qt_internal_add_test(tst_qcansignaldescription
SOURCES
tst_qcansignaldescription.cpp
+ INCLUDE_DIRECTORIES
+ ${SHARED_DIR}
LIBRARIES
Qt::Network
Qt::SerialBus
diff --git a/tests/auto/qcansignaldescription/tst_qcansignaldescription.cpp b/tests/auto/qcansignaldescription/tst_qcansignaldescription.cpp
index 2a4ef79..cffd7a0 100644
--- a/tests/auto/qcansignaldescription/tst_qcansignaldescription.cpp
+++ b/tests/auto/qcansignaldescription/tst_qcansignaldescription.cpp
@@ -6,6 +6,8 @@
#include <QtSerialBus/qcansignaldescription.h>
#include <QtSerialBus/private/qcansignaldescription_p.h>
+#include "qcansignaldescription_helpers.h"
+
QT_USE_NAMESPACE
class tst_QCanSignalDescription : public QObject
diff --git a/tests/auto/qcanuniqueiddescription/CMakeLists.txt b/tests/auto/qcanuniqueiddescription/CMakeLists.txt
index 0afb458..9f94365 100644
--- a/tests/auto/qcanuniqueiddescription/CMakeLists.txt
+++ b/tests/auto/qcanuniqueiddescription/CMakeLists.txt
@@ -1,9 +1,13 @@
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause
+get_filename_component(SHARED_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../shared ABSOLUTE)
+
qt_internal_add_test(tst_qcanuniqueiddescription
SOURCES
tst_qcanuniqueiddescription.cpp
+ INCLUDE_DIRECTORIES
+ ${SHARED_DIR}
LIBRARIES
Qt::Network
Qt::SerialBus
diff --git a/tests/auto/qcanuniqueiddescription/tst_qcanuniqueiddescription.cpp b/tests/auto/qcanuniqueiddescription/tst_qcanuniqueiddescription.cpp
index 04e78fd..7c24742 100644
--- a/tests/auto/qcanuniqueiddescription/tst_qcanuniqueiddescription.cpp
+++ b/tests/auto/qcanuniqueiddescription/tst_qcanuniqueiddescription.cpp
@@ -6,6 +6,8 @@
#include <QtSerialBus/qcanuniqueiddescription.h>
#include <QtSerialBus/private/qcanuniqueiddescription_p.h>
+#include "qcanuniqueiddescription_helpers.h"
+
QT_USE_NAMESPACE
class tst_QCanUniqueIdDescription : public QObject
diff --git a/tests/auto/shared/qcanmessagedescription_helpers.h b/tests/auto/shared/qcanmessagedescription_helpers.h
new file mode 100644
index 0000000..4c69a63
--- /dev/null
+++ b/tests/auto/shared/qcanmessagedescription_helpers.h
@@ -0,0 +1,32 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QCANMESSAGEDESCRIPTION_HELPERS_H
+#define QCANMESSAGEDESCRIPTION_HELPERS_H
+
+#include <QtSerialBus/qcanmessagedescription.h>
+
+#include "qcansignaldescription_helpers.h"
+
+QT_BEGIN_NAMESPACE
+
+inline bool operator==(const QCanMessageDescription &lhs,
+ const QCanMessageDescription &rhs) noexcept
+{
+ return lhs.uniqueId() == rhs.uniqueId()
+ && lhs.name() == rhs.name()
+ && lhs.size() == rhs.size()
+ && lhs.transmitter() == rhs.transmitter()
+ && lhs.comment() == rhs.comment()
+ && lhs.signalDescriptions() == rhs.signalDescriptions();
+}
+
+inline bool operator!=(const QCanMessageDescription &lhs,
+ const QCanMessageDescription &rhs) noexcept
+{
+ return !(lhs == rhs);
+}
+
+QT_END_NAMESPACE
+
+#endif // QCANMESSAGEDESCRIPTION_HELPERS_H
diff --git a/tests/auto/shared/qcansignaldescription_helpers.h b/tests/auto/shared/qcansignaldescription_helpers.h
new file mode 100644
index 0000000..6383150
--- /dev/null
+++ b/tests/auto/shared/qcansignaldescription_helpers.h
@@ -0,0 +1,62 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QCANSIGNALDESCRIPTION_HELPERS_H
+#define QCANSIGNALDESCRIPTION_HELPERS_H
+
+#include <QtCore/qnumeric.h>
+
+#include <QtSerialBus/qcansignaldescription.h>
+
+QT_BEGIN_NAMESPACE
+
+// copied from qtbase/src/testlib/qtestcase.cpp
+template <typename T>
+bool floatingCompare(const T &actual, const T &expected)
+{
+ switch (qFpClassify(expected))
+ {
+ case FP_INFINITE:
+ return (expected < 0) == (actual < 0) && qFpClassify(actual) == FP_INFINITE;
+ case FP_NAN:
+ return qFpClassify(actual) == FP_NAN;
+ default:
+ if (!qFuzzyIsNull(expected))
+ return qFuzzyCompare(actual, expected);
+ Q_FALLTHROUGH();
+ case FP_SUBNORMAL: // subnormal is always fuzzily null
+ case FP_ZERO:
+ return qFuzzyIsNull(actual);
+ }
+}
+
+inline bool operator==(const QCanSignalDescription &lhs,
+ const QCanSignalDescription &rhs) noexcept
+{
+ return lhs.name() == rhs.name()
+ && lhs.physicalUnit() == rhs.physicalUnit()
+ && lhs.receiver() == rhs.receiver()
+ && lhs.comment() == rhs.comment()
+ && lhs.dataSource() == rhs.dataSource()
+ && lhs.dataEndian() == rhs.dataEndian()
+ && lhs.dataFormat() == rhs.dataFormat()
+ && lhs.startBit() == rhs.startBit()
+ && lhs.bitLength() == rhs.bitLength()
+ && floatingCompare(lhs.factor(), rhs.factor())
+ && floatingCompare(lhs.offset(), rhs.offset())
+ && floatingCompare(lhs.scaling(), rhs.scaling())
+ && floatingCompare(lhs.minimum(), rhs.minimum())
+ && floatingCompare(lhs.maximum(), rhs.maximum())
+ && lhs.multiplexState() == rhs.multiplexState()
+ && lhs.multiplexSignals() == rhs.multiplexSignals();
+}
+
+inline bool operator!=(const QCanSignalDescription &lhs,
+ const QCanSignalDescription &rhs) noexcept
+{
+ return !(lhs == rhs);
+}
+
+QT_END_NAMESPACE
+
+#endif // QCANSIGNALDESCRIPTION_HELPERS_H
diff --git a/tests/auto/shared/qcanuniqueiddescription_helpers.h b/tests/auto/shared/qcanuniqueiddescription_helpers.h
new file mode 100644
index 0000000..a1932fe
--- /dev/null
+++ b/tests/auto/shared/qcanuniqueiddescription_helpers.h
@@ -0,0 +1,28 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QCANUNIQUEIDDESCRIPTION_HELPERS_H
+#define QCANUNIQUEIDDESCRIPTION_HELPERS_H
+
+#include <QtSerialBus/qcanuniqueiddescription.h>
+
+QT_BEGIN_NAMESPACE
+
+inline bool operator==(const QCanUniqueIdDescription &lhs,
+ const QCanUniqueIdDescription &rhs) noexcept
+{
+ return lhs.source() == rhs.source()
+ && lhs.startBit() == rhs.startBit()
+ && lhs.bitLength() == rhs.bitLength()
+ && lhs.endian() == rhs.endian();
+}
+
+inline bool operator!=(const QCanUniqueIdDescription &lhs,
+ const QCanUniqueIdDescription &rhs) noexcept
+{
+ return !(lhs == rhs);
+}
+
+QT_END_NAMESPACE
+
+#endif // QCANUNIQUEIDDESCRIPTION_HELPERS_H