Adopt absl::string_view in rtc_base/string_encode.*
Bug: webrtc:13579
Change-Id: If52108d151a12bde0e8d552ce7940948c08cef3a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256812
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Jakob Ivarsson‎ <jakobi@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Ali Tofigh <alito@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36424}
diff --git a/rtc_base/buffer.h b/rtc_base/buffer.h
index c9bf2cc..be8e22b 100644
--- a/rtc_base/buffer.h
+++ b/rtc_base/buffer.h
@@ -19,6 +19,7 @@
#include <type_traits>
#include <utility>
+#include "absl/strings/string_view.h"
#include "api/array_view.h"
#include "rtc_base/checks.h"
#include "rtc_base/type_traits.h"
@@ -117,6 +118,13 @@
~BufferT() { MaybeZeroCompleteBuffer(); }
+ // Implicit conversion to absl::string_view if T is compatible with char.
+ template <typename U = T>
+ operator typename std::enable_if<internal::BufferCompat<U, char>::value,
+ absl::string_view>::type() const {
+ return absl::string_view(data<char>(), size());
+ }
+
// Get a pointer to the data. Just .data() will give you a (const) T*, but if
// T is a byte-sized integer, you may also use .data<U>() for any other
// byte-sized integer U.