cpp-common/bt2c: add `CStringView::startsWith`
[babeltrace.git] / src / cpp-common / bt2c / c-string-view.hpp
index 54c87de9f1df581541e6eec5b9af40e3155bcd1a..0437cd65c4d87458ebe8eca1029d74e728201649 100644 (file)
@@ -13,7 +13,7 @@
 
 #include "common/assert.h"
 #include "cpp-common/bt2s/string-view.hpp"
-#include "cpp-common/vendor/fmt/format.h"
+#include "cpp-common/vendor/fmt/format.h" /* IWYU pragma: keep */
 
 #include "type-traits.hpp"
 
@@ -176,11 +176,18 @@ public:
         return _mStr[i];
     }
 
+    bool startsWith(const bt2c::CStringView prefix) const noexcept
+    {
+        BT_ASSERT_DBG(_mStr);
+        BT_ASSERT_DBG(prefix);
+        return std::strncmp(_mStr, prefix, prefix.len()) == 0;
+    }
+
 private:
     const char *_mStr = nullptr;
 };
 
-static inline const char *format_as(const CStringView& str)
+inline const char *format_as(const CStringView& str)
 {
     return str ? *str : "(null)";
 }
@@ -240,7 +247,10 @@ bool operator==(LhsT&& lhs, RhsT&& rhs) noexcept
  *
  * Both `lhs` and `rhs` must not have an underlying `nullptr` raw data.
  */
-template <typename LhsT, typename RhsT>
+template <
+    typename LhsT, typename RhsT,
+    typename = typename std::enable_if<internal::ComparableWithCStringView<LhsT>::value>::type,
+    typename = typename std::enable_if<internal::ComparableWithCStringView<RhsT>::value>::type>
 bool operator!=(LhsT&& lhs, RhsT&& rhs) noexcept
 {
     return !(std::forward<LhsT>(lhs) == std::forward<RhsT>(rhs));
This page took 0.024214 seconds and 4 git commands to generate.