Support absl::string_view in RTC_CHECK.
Bug: None
Change-Id: I8d4c296f1ac16a96adb88401f78ee9f65911bfc0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/126482
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27052}
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index 572d224..6fbbb3f 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -341,6 +341,7 @@
deps = [
":safe_compare",
"system:inline",
+ "//third_party/abseil-cpp/absl/strings",
]
if (is_android) {
libs += [ "log" ]
diff --git a/rtc_base/checks.cc b/rtc_base/checks.cc
index b8b5c9d..d541307 100644
--- a/rtc_base/checks.cc
+++ b/rtc_base/checks.cc
@@ -39,7 +39,7 @@
#if defined(__GNUC__)
__attribute__((__format__(__printf__, 2, 3)))
#endif
- void AppendFormat(std::string* s, const char* fmt, ...) {
+void AppendFormat(std::string* s, const char* fmt, ...) {
va_list args, copy;
va_start(args, fmt);
va_copy(copy, args);
@@ -54,7 +54,7 @@
}
va_end(args);
}
-}
+} // namespace
namespace rtc {
namespace webrtc_checks_impl {
@@ -96,6 +96,11 @@
case CheckArgType::kStdString:
s->append(*va_arg(*args, const std::string*));
break;
+ case CheckArgType::kStringView: {
+ const absl::string_view sv = *va_arg(*args, const absl::string_view*);
+ s->append(sv.data(), sv.size());
+ break;
+ }
case CheckArgType::kVoidP:
AppendFormat(s, "%p", va_arg(*args, const void*));
break;
diff --git a/rtc_base/checks.h b/rtc_base/checks.h
index 9de6d47..2694258 100644
--- a/rtc_base/checks.h
+++ b/rtc_base/checks.h
@@ -42,6 +42,7 @@
#include <string>
+#include "absl/strings/string_view.h"
#include "rtc_base/numerics/safe_compare.h"
#include "rtc_base/system/inline.h"
@@ -99,6 +100,7 @@
kLongDouble,
kCharP,
kStdString,
+ kStringView,
kVoidP,
// kCheckOp doesn't represent an argument type. Instead, it is sent as the
@@ -157,6 +159,10 @@
const std::string& x) {
return {&x};
}
+inline Val<CheckArgType::kStringView, const absl::string_view*> MakeVal(
+ const absl::string_view& x) {
+ return {&x};
+}
inline Val<CheckArgType::kVoidP, const void*> MakeVal(const void* x) {
return {x};