From e9d8ae82ae0f14f50c6773c258c0de0b3ebbe1d0 Mon Sep 17 00:00:00 2001 From: Emilio Cuesta Date: Wed, 7 Jan 2026 16:49:41 +0100 Subject: [PATCH 1/6] Add missing operators Signed-off-by: Emilio Cuesta --- cpp_utils/include/cpp_utils/ReturnCode.hpp | 8 ++++++++ cpp_utils/src/cpp/ReturnCode.cpp | 12 ++++++++++++ 2 files changed, 20 insertions(+) diff --git a/cpp_utils/include/cpp_utils/ReturnCode.hpp b/cpp_utils/include/cpp_utils/ReturnCode.hpp index 6d82a4c..bc0e4ad 100644 --- a/cpp_utils/include/cpp_utils/ReturnCode.hpp +++ b/cpp_utils/include/cpp_utils/ReturnCode.hpp @@ -69,6 +69,14 @@ class ReturnCode bool operator !=( const ReturnCode& c) const noexcept; + CPP_UTILS_DllAPI + bool operator ==( + const ReturnCodeValue& c) const noexcept; + + CPP_UTILS_DllAPI + bool operator !=( + const ReturnCodeValue& c) const noexcept; + CPP_UTILS_DllAPI bool operator <( const ReturnCode& other) const noexcept; diff --git a/cpp_utils/src/cpp/ReturnCode.cpp b/cpp_utils/src/cpp/ReturnCode.cpp index 1a04b79..d1ddf65 100644 --- a/cpp_utils/src/cpp/ReturnCode.cpp +++ b/cpp_utils/src/cpp/ReturnCode.cpp @@ -78,6 +78,18 @@ bool ReturnCode::operator !=( return value_ != c.value_; } +bool ReturnCode::operator ==( + const ReturnCodeValue& c) const noexcept +{ + return value_ == c; +} + +bool ReturnCode::operator !=( + const ReturnCodeValue& c) const noexcept +{ + return value_ != c; +} + bool ReturnCode::operator <( const ReturnCode& other) const noexcept { From 0d98e6e55b7591ae556d18222c965639debcee44 Mon Sep 17 00:00:00 2001 From: Emilio Cuesta Date: Mon, 12 Jan 2026 08:21:13 +0100 Subject: [PATCH 2/6] Add new constructor to avoid mischievous conversions Signed-off-by: Emilio Cuesta --- cpp_utils/include/cpp_utils/ReturnCode.hpp | 4 ++++ cpp_utils/src/cpp/ReturnCode.cpp | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/cpp_utils/include/cpp_utils/ReturnCode.hpp b/cpp_utils/include/cpp_utils/ReturnCode.hpp index bc0e4ad..2d68463 100644 --- a/cpp_utils/include/cpp_utils/ReturnCode.hpp +++ b/cpp_utils/include/cpp_utils/ReturnCode.hpp @@ -58,6 +58,10 @@ class ReturnCode ReturnCode( const fastdds::dds::ReturnCode_t& value); + CPP_UTILS_DllAPI + ReturnCode( + const ReturnCodeValue& value); + CPP_UTILS_DllAPI std::uint32_t operator ()() const noexcept; diff --git a/cpp_utils/src/cpp/ReturnCode.cpp b/cpp_utils/src/cpp/ReturnCode.cpp index d1ddf65..5efe324 100644 --- a/cpp_utils/src/cpp/ReturnCode.cpp +++ b/cpp_utils/src/cpp/ReturnCode.cpp @@ -61,6 +61,12 @@ ReturnCode::ReturnCode( } } +ReturnCode::ReturnCode( + const ReturnCode::ReturnCodeValue& value) +{ + value_ = value; +} + std::uint32_t ReturnCode::operator ()() const noexcept { return value_; From e3d390a56e24f3cd5855be4b7824fa54ceed835b Mon Sep 17 00:00:00 2001 From: Emilio Cuesta Date: Mon, 12 Jan 2026 08:32:51 +0100 Subject: [PATCH 3/6] Removing comparison operators not needed anymore Signed-off-by: Emilio Cuesta --- cpp_utils/include/cpp_utils/ReturnCode.hpp | 8 -------- cpp_utils/src/cpp/ReturnCode.cpp | 12 ------------ 2 files changed, 20 deletions(-) diff --git a/cpp_utils/include/cpp_utils/ReturnCode.hpp b/cpp_utils/include/cpp_utils/ReturnCode.hpp index 2d68463..89f2a61 100644 --- a/cpp_utils/include/cpp_utils/ReturnCode.hpp +++ b/cpp_utils/include/cpp_utils/ReturnCode.hpp @@ -73,14 +73,6 @@ class ReturnCode bool operator !=( const ReturnCode& c) const noexcept; - CPP_UTILS_DllAPI - bool operator ==( - const ReturnCodeValue& c) const noexcept; - - CPP_UTILS_DllAPI - bool operator !=( - const ReturnCodeValue& c) const noexcept; - CPP_UTILS_DllAPI bool operator <( const ReturnCode& other) const noexcept; diff --git a/cpp_utils/src/cpp/ReturnCode.cpp b/cpp_utils/src/cpp/ReturnCode.cpp index 5efe324..8102aba 100644 --- a/cpp_utils/src/cpp/ReturnCode.cpp +++ b/cpp_utils/src/cpp/ReturnCode.cpp @@ -84,18 +84,6 @@ bool ReturnCode::operator !=( return value_ != c.value_; } -bool ReturnCode::operator ==( - const ReturnCodeValue& c) const noexcept -{ - return value_ == c; -} - -bool ReturnCode::operator !=( - const ReturnCodeValue& c) const noexcept -{ - return value_ != c; -} - bool ReturnCode::operator <( const ReturnCode& other) const noexcept { From 06b7538deb7d6b037132749a671b3ac54755a212 Mon Sep 17 00:00:00 2001 From: Emilio Cuesta Date: Thu, 15 Jan 2026 07:55:54 +0100 Subject: [PATCH 4/6] Changing variable type for consistency Signed-off-by: Emilio Cuesta --- cpp_utils/include/cpp_utils/ReturnCode.hpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cpp_utils/include/cpp_utils/ReturnCode.hpp b/cpp_utils/include/cpp_utils/ReturnCode.hpp index 89f2a61..b148c6a 100644 --- a/cpp_utils/include/cpp_utils/ReturnCode.hpp +++ b/cpp_utils/include/cpp_utils/ReturnCode.hpp @@ -88,9 +88,8 @@ class ReturnCode //! Link every ReturnCodeValue available with a string to deserialize static const std::map to_string_conversion_; - //! \c ReturnCode value - std::uint32_t value_; - + //! \c ReturnCodeValue + ReturnCodeValue value_; // operator << needs access to the object CPP_UTILS_DllAPI From 895888597122e50ac80ad66a8607cc52676fdd01 Mon Sep 17 00:00:00 2001 From: danipiza Date: Fri, 20 Feb 2026 13:22:07 +0100 Subject: [PATCH 5/6] [#24195] Added operators for ReturnCodeValue Signed-off-by: danipiza --- cpp_utils/include/cpp_utils/ReturnCode.hpp | 28 +++++++++++++++++++ cpp_utils/src/cpp/ReturnCode.cpp | 26 +++++++++++++++++ .../test/unittest/return_code/CMakeLists.txt | 2 ++ .../unittest/return_code/ReturnCodeTest.cpp | 28 +++++++++++++++++++ 4 files changed, 84 insertions(+) diff --git a/cpp_utils/include/cpp_utils/ReturnCode.hpp b/cpp_utils/include/cpp_utils/ReturnCode.hpp index b148c6a..ea6a174 100644 --- a/cpp_utils/include/cpp_utils/ReturnCode.hpp +++ b/cpp_utils/include/cpp_utils/ReturnCode.hpp @@ -69,10 +69,18 @@ class ReturnCode bool operator ==( const ReturnCode& c) const noexcept; + CPP_UTILS_DllAPI + bool operator ==( + const ReturnCodeValue& c) const noexcept; + CPP_UTILS_DllAPI bool operator !=( const ReturnCode& c) const noexcept; + CPP_UTILS_DllAPI + bool operator !=( + const ReturnCodeValue& c) const noexcept; + CPP_UTILS_DllAPI bool operator <( const ReturnCode& other) const noexcept; @@ -97,8 +105,28 @@ class ReturnCode std::ostream& os, const ReturnCode& code); + CPP_UTILS_DllAPI + friend bool operator ==( + const ReturnCodeValue& lhs, + const ReturnCode& rhs) noexcept; + + CPP_UTILS_DllAPI + friend bool operator !=( + const ReturnCodeValue& lhs, + const ReturnCode& rhs) noexcept; + }; +CPP_UTILS_DllAPI +bool operator ==( + const ReturnCode::ReturnCodeValue& lhs, + const ReturnCode& rhs) noexcept; + +CPP_UTILS_DllAPI +bool operator !=( + const ReturnCode::ReturnCodeValue& lhs, + const ReturnCode& rhs) noexcept; + //! \c ReturnCode to stream serializator CPP_UTILS_DllAPI std::ostream& operator <<( diff --git a/cpp_utils/src/cpp/ReturnCode.cpp b/cpp_utils/src/cpp/ReturnCode.cpp index 8102aba..511322b 100644 --- a/cpp_utils/src/cpp/ReturnCode.cpp +++ b/cpp_utils/src/cpp/ReturnCode.cpp @@ -78,12 +78,24 @@ bool ReturnCode::operator ==( return value_ == c.value_; } +bool ReturnCode::operator ==( + const ReturnCode::ReturnCodeValue& c) const noexcept +{ + return value_ == c; +} + bool ReturnCode::operator !=( const ReturnCode& c) const noexcept { return value_ != c.value_; } +bool ReturnCode::operator !=( + const ReturnCode::ReturnCodeValue& c) const noexcept +{ + return value_ != c; +} + bool ReturnCode::operator <( const ReturnCode& other) const noexcept { @@ -95,6 +107,20 @@ bool ReturnCode::operator !() const noexcept return value_ != ReturnCode::RETCODE_OK; } +bool operator ==( + const ReturnCode::ReturnCodeValue& lhs, + const ReturnCode& rhs) noexcept +{ + return rhs == lhs; +} + +bool operator !=( + const ReturnCode::ReturnCodeValue& lhs, + const ReturnCode& rhs) noexcept +{ + return rhs != lhs; +} + const std::map ReturnCode::to_string_conversion_ = { {ReturnCode::RETCODE_OK, "Ok"}, diff --git a/cpp_utils/test/unittest/return_code/CMakeLists.txt b/cpp_utils/test/unittest/return_code/CMakeLists.txt index e106354..dfbc9a9 100644 --- a/cpp_utils/test/unittest/return_code/CMakeLists.txt +++ b/cpp_utils/test/unittest/return_code/CMakeLists.txt @@ -21,6 +21,8 @@ set(TEST_SOURCES set(TEST_LIST serializator + compare_against_return_code_value_rhs + compare_against_return_code_value_lhs ) set(TEST_EXTRA_LIBRARIES diff --git a/cpp_utils/test/unittest/return_code/ReturnCodeTest.cpp b/cpp_utils/test/unittest/return_code/ReturnCodeTest.cpp index 4e60a12..84efc59 100644 --- a/cpp_utils/test/unittest/return_code/ReturnCodeTest.cpp +++ b/cpp_utils/test/unittest/return_code/ReturnCodeTest.cpp @@ -43,6 +43,34 @@ TEST(ReturnCodeTest, serializator) } } +/** + * Test ReturnCode compares directly against ReturnCodeValue values. + */ +TEST(ReturnCodeTest, compare_against_return_code_value_rhs) +{ + // Right side of the comparation + + ReturnCode from_fastdds(fastdds::dds::RETCODE_NO_DATA); + + ASSERT_TRUE(from_fastdds == ReturnCode::RETCODE_NO_DATA); + ASSERT_FALSE(from_fastdds == ReturnCode::RETCODE_ERROR); + ASSERT_TRUE(from_fastdds != ReturnCode::RETCODE_ERROR); +} + +/** + * Test ReturnCodeValue compares directly against ReturnCode from lhs. + */ +TEST(ReturnCodeTest, compare_against_return_code_value_lhs) +{ + // Left side of the comparation + + ReturnCode ret(ReturnCode::RETCODE_NOT_ENABLED); + + ASSERT_TRUE(ReturnCode::RETCODE_NOT_ENABLED == ret); + ASSERT_TRUE(ReturnCode::RETCODE_OK != ret); + ASSERT_FALSE(ReturnCode::RETCODE_OK == ret); +} + int main( int argc, char** argv) From 4cc423c5f6afb93ceee419efdb3263a493f53140 Mon Sep 17 00:00:00 2001 From: danipiza Date: Fri, 20 Feb 2026 13:35:44 +0100 Subject: [PATCH 6/6] [#24195] Solved namespace error in retcode test Signed-off-by: danipiza --- cpp_utils/test/unittest/return_code/ReturnCodeTest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp_utils/test/unittest/return_code/ReturnCodeTest.cpp b/cpp_utils/test/unittest/return_code/ReturnCodeTest.cpp index 84efc59..45dc1ad 100644 --- a/cpp_utils/test/unittest/return_code/ReturnCodeTest.cpp +++ b/cpp_utils/test/unittest/return_code/ReturnCodeTest.cpp @@ -50,7 +50,7 @@ TEST(ReturnCodeTest, compare_against_return_code_value_rhs) { // Right side of the comparation - ReturnCode from_fastdds(fastdds::dds::RETCODE_NO_DATA); + ReturnCode from_fastdds(eprosima::fastdds::dds::RETCODE_NO_DATA); ASSERT_TRUE(from_fastdds == ReturnCode::RETCODE_NO_DATA); ASSERT_FALSE(from_fastdds == ReturnCode::RETCODE_ERROR);