pw_string: Rename va_list Format to FormatVaList
On Windows, sometimes the va_list overload would be used when formatting
with a single argument. To avoid potential conflicts like these, the
va_list versions of string::Format and StringBuilder::Format are renamed
to FormatVaList.
Change-Id: Id29fae21b13ed420b13841a479e3748a1d3b91ce
diff --git a/pw_log_basic/log_basic.cc b/pw_log_basic/log_basic.cc
index 93654dc..a8f8c8d 100644
--- a/pw_log_basic/log_basic.cc
+++ b/pw_log_basic/log_basic.cc
@@ -138,7 +138,7 @@
// Column: Message
va_list args;
va_start(args, message);
- buffer.Format(message, args);
+ buffer.FormatVaList(message, args);
va_end(args);
// All done; flush the log.
diff --git a/pw_string/docs.rst b/pw_string/docs.rst
index a47b08f..67ee9a6 100644
--- a/pw_string/docs.rst
+++ b/pw_string/docs.rst
@@ -26,9 +26,10 @@
pw::string::Format
------------------
-The ``pw::string::Format`` functions provides are safer alternatives to
-``std::snprintf`` and ``std::vsnprintf``. The snprintf return value is awkward
-to interpret, and misinterpreting it can lead to serious bugs.
+The ``pw::string::Format`` and ``pw::string::FormatVaList`` functions provide
+safer alternatives to ``std::snprintf`` and ``std::vsnprintf``. The snprintf
+return value is awkward to interpret, and misinterpreting it can lead to serious
+bugs.
Size report: replacing snprintf with pw::string::Format
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/pw_string/format.cc b/pw_string/format.cc
index a0f2b17..dc83f1d 100644
--- a/pw_string/format.cc
+++ b/pw_string/format.cc
@@ -21,15 +21,15 @@
StatusWithSize Format(const span<char>& buffer, const char* format, ...) {
va_list args;
va_start(args, format);
- const StatusWithSize result = Format(buffer, format, args);
+ const StatusWithSize result = FormatVaList(buffer, format, args);
va_end(args);
return result;
}
-StatusWithSize Format(const span<char>& buffer,
- const char* format,
- va_list args) {
+StatusWithSize FormatVaList(const span<char>& buffer,
+ const char* format,
+ va_list args) {
if (buffer.empty()) {
return StatusWithSize(Status::RESOURCE_EXHAUSTED, 0);
}
diff --git a/pw_string/format_test.cc b/pw_string/format_test.cc
index 6344ad5..1c44c4e 100644
--- a/pw_string/format_test.cc
+++ b/pw_string/format_test.cc
@@ -76,7 +76,7 @@
TEST(Format, ArgumentLargerThanBuffer_ReturnsResourceExhausted) {
char buffer[5];
- auto result = Format(buffer, "%s%c", "2big", '!');
+ auto result = Format(buffer, "%s", "2big!");
EXPECT_EQ(Status::RESOURCE_EXHAUSTED, result.status());
EXPECT_EQ(4u, result.size());
@@ -87,7 +87,7 @@
va_list args;
va_start(args, fmt);
- StatusWithSize result = Format(buffer, fmt, args);
+ StatusWithSize result = FormatVaList(buffer, fmt, args);
va_end(args);
return result;
diff --git a/pw_string/public/pw_string/format.h b/pw_string/public/pw_string/format.h
index efa71f1..72198bf 100644
--- a/pw_string/public/pw_string/format.h
+++ b/pw_string/public/pw_string/format.h
@@ -45,8 +45,8 @@
// Writes a printf-style formatted string with va_list-packed arguments to the
// provided buffer, similarly to std::vsnprintf. The return value is the same as
// above.
-StatusWithSize Format(const span<char>& buffer,
- const char* format,
- va_list args);
+StatusWithSize FormatVaList(const span<char>& buffer,
+ const char* format,
+ va_list args);
} // namespace pw::string
diff --git a/pw_string/public/pw_string/string_builder.h b/pw_string/public/pw_string/string_builder.h
index e3a1db9..d2397e4 100644
--- a/pw_string/public/pw_string/string_builder.h
+++ b/pw_string/public/pw_string/string_builder.h
@@ -232,7 +232,7 @@
// truncated and the status is set to RESOURCE_EXHAUSTED.
//
// Internally, calls string::Format, which calls std::vsnprintf.
- StringBuilder& Format(const char* format, va_list args);
+ StringBuilder& FormatVaList(const char* format, va_list args);
// Sets the StringBuilder's size. This function only truncates; if
// new_size > size(), it sets status to OUT_OF_RANGE and does nothing.
diff --git a/pw_string/size_report/format_single.cc b/pw_string/size_report/format_single.cc
index 7610297..3982a1c 100644
--- a/pw_string/size_report/format_single.cc
+++ b/pw_string/size_report/format_single.cc
@@ -40,8 +40,7 @@
#if USE_FORMAT
// The code for using pw::string::Format is much simpler and safer.
- return pw::string::Format(
- span(buffer, buffer_size), "hello %s %d", get_buffer, get_size)
+ return Format(span(buffer, buffer_size), "hello %s %d", get_buffer, get_size)
.size();
#else // std::snprintf
if (buffer_size == 0u) {
diff --git a/pw_string/string_builder.cc b/pw_string/string_builder.cc
index 2c0be37..b433e7f 100644
--- a/pw_string/string_builder.cc
+++ b/pw_string/string_builder.cc
@@ -88,14 +88,15 @@
StringBuilder& StringBuilder::Format(const char* format, ...) {
va_list args;
va_start(args, format);
- Format(format, args);
+ FormatVaList(format, args);
va_end(args);
return *this;
}
-StringBuilder& StringBuilder::Format(const char* format, va_list args) {
- HandleStatusWithSize(string::Format(buffer_.subspan(size_), format, args));
+StringBuilder& StringBuilder::FormatVaList(const char* format, va_list args) {
+ HandleStatusWithSize(
+ string::FormatVaList(buffer_.subspan(size_), format, args));
return *this;
}