Inline StringRef::operator==

This enables its inlining even without LTO, which in turns enables
callers to determine that two StringRefs are unequals with simple
comparison of two numbers, without any function calls.
This commit is contained in:
Martin Hořeňovský committed 2023-02-20 15:05:09 +01:00
1 parent 2befd98da2
commit e1dbad4c9e
2 files changed
+6 -5

No files matched your search

-4
View File
@@ -17,10 +17,6 @@ namespace Catch {
: StringRef( rawChars, std::strlen(rawChars) )
{}
auto StringRef::operator == ( StringRef other ) const noexcept -> bool {
return m_size == other.m_size
&& (std::memcmp( m_start, other.m_start, m_size ) == 0);
}
bool StringRef::operator<(StringRef rhs) const noexcept {
if (m_size < rhs.m_size) {
+6 -1
View File
@@ -13,6 +13,8 @@
#include <iosfwd>
#include <cassert>
#include <cstring>
namespace Catch {
/// A non-owning string class (similar to the forthcoming std::string_view)
@@ -49,7 +51,10 @@ namespace Catch {
}
public: // operators
auto operator == ( StringRef other ) const noexcept -> bool;
auto operator == ( StringRef other ) const noexcept -> bool {
return m_size == other.m_size
&& (std::memcmp( m_start, other.m_start, m_size ) == 0);
}
auto operator != (StringRef other) const noexcept -> bool {
return !(*this == other);
}