pw_string: Add ByteSpan StringBuilder constructor
Adds a std::span<std::byte> constructor for StringBuilder to allow
construction of a StringBuilder on a byte array.
Change-Id: I1d665da4d72680dfe03eddf2554f22a9e51d57fa
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/15540
Reviewed-by: Wyatt Hepler <hepler@google.com>
Commit-Queue: Armando Montanez <amontanez@google.com>
diff --git a/pw_string/public/pw_string/string_builder.h b/pw_string/public/pw_string/string_builder.h
index 96a88ef..21769b3 100644
--- a/pw_string/public/pw_string/string_builder.h
+++ b/pw_string/public/pw_string/string_builder.h
@@ -89,6 +89,9 @@
constexpr StringBuilder(std::span<char> buffer) : buffer_(buffer), size_(0) {
NullTerminate();
}
+ StringBuilder(std::span<std::byte> buffer)
+ : StringBuilder(
+ {reinterpret_cast<char*>(buffer.data()), buffer.size_bytes()}) {}
// Disallow copy/assign to avoid confusion about where the string is actually
// stored. StringBuffers may be copied into one another.
diff --git a/pw_string/string_builder_test.cc b/pw_string/string_builder_test.cc
index c36c748..d078299 100644
--- a/pw_string/string_builder_test.cc
+++ b/pw_string/string_builder_test.cc
@@ -276,7 +276,8 @@
}
TEST(StringBuilder, Format_Normal) {
- StringBuffer<64> sb;
+ std::byte buffer[64];
+ StringBuilder sb(buffer);
EXPECT_TRUE(sb.Format("0x%x", 0xabc).ok());
EXPECT_STREQ("0xabc", sb.data());