From 5c82e38c93fb8022400050a20bec94bd56c9dcbe Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Sat, 9 Oct 2021 16:55:33 +0300 Subject: [PATCH] Add other relational operators; update sv_eq_test --- include/boost/core/string_view.hpp | 20 ++++++++++++++++++++ test/sv_eq_test.cpp | 14 ++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/include/boost/core/string_view.hpp b/include/boost/core/string_view.hpp index 23c2d50..0ee3916 100644 --- a/include/boost/core/string_view.hpp +++ b/include/boost/core/string_view.hpp @@ -904,6 +904,26 @@ public: { return sv1.compare( sv2 ) != 0; } + + BOOST_CXX14_CONSTEXPR friend bool operator<( basic_string_view sv1, basic_string_view sv2 ) BOOST_NOEXCEPT + { + return sv1.compare( sv2 ) < 0; + } + + BOOST_CXX14_CONSTEXPR friend bool operator<=( basic_string_view sv1, basic_string_view sv2 ) BOOST_NOEXCEPT + { + return sv1.compare( sv2 ) <= 0; + } + + BOOST_CXX14_CONSTEXPR friend bool operator>( basic_string_view sv1, basic_string_view sv2 ) BOOST_NOEXCEPT + { + return sv1.compare( sv2 ) > 0; + } + + BOOST_CXX14_CONSTEXPR friend bool operator>=( basic_string_view sv1, basic_string_view sv2 ) BOOST_NOEXCEPT + { + return sv1.compare( sv2 ) >= 0; + } }; template std::basic_ostream& operator<<( std::basic_ostream& os, basic_string_view str ) diff --git a/test/sv_eq_test.cpp b/test/sv_eq_test.cpp index a71e125..ba32d13 100644 --- a/test/sv_eq_test.cpp +++ b/test/sv_eq_test.cpp @@ -9,8 +9,18 @@ # include #endif -#define TEST_EQ(x, y) BOOST_TEST_EQ(x, y); BOOST_TEST_NOT((x) != (y)) -#define TEST_NE(x, y) BOOST_TEST_NE(x, y); BOOST_TEST_NOT((x) == (y)) +#define TEST_EQ(x, y) \ + BOOST_TEST_EQ(x, y); \ + BOOST_TEST_NOT((x) != (y)); \ + BOOST_TEST_LE(x, y); \ + BOOST_TEST_GE(x, y); \ + BOOST_TEST_NOT((x) < (y)); \ + BOOST_TEST_NOT((x) > (y)) + +#define TEST_NE(x, y) \ + BOOST_TEST_NE(x, y); \ + BOOST_TEST_NOT((x) == (y)); \ + BOOST_TEST((x) < (y) || (x) > (y)); int main() {