The FormatSection and the writer functions both previously took a char*
and a length to represent a string. Now they use the StringView class to
represent that more succinctly. This change also required fixing
everywhere these were used, so it touches a lot of files.
Details
- Reviewers
sivachandra lntue - Commits
- rG096463d08eaa: [libc] move printf to use StringViews
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
libc/src/stdio/printf_core/char_converter.h | ||
---|---|---|
35 | Here and elsewhere, instead of calling the StringView constructor explicitly, can you do {&c, string_len}? | |
libc/src/stdio/printf_core/file_writer.h | ||
37–39 | While we are at it, we should make these static methods of FileWriter and simplify the names to write_str and write_chars. | |
libc/src/stdio/printf_core/string_writer.h | ||
41 | Make these static methods of StringWriter. | |
libc/src/stdio/printf_core/writer.h | ||
49 | Something we should have done earlier is to name all of these methods as just write. So, I think we should have: int write(cpp::StringView); int write(char c, size_t count); int write(char c); I am suggesting a separate write(char) to avoid calling, for example, memcpy to write a single char to a string buffer. Likewise, the FileWriter can implement a char writer by calling putc_unlocked when it is available. More importantly though, you will avoid the ugliness of writer->write(StringView(&some_char, 1)) at many places in this change. | |
libc/test/src/stdio/printf_core/parser_test.cpp | ||
57 | Can you do: expected.raw_string = {str, 4}; |
A comment about inconsistent usage of a pattern but good to go otherwise.
libc/test/src/stdio/printf_core/string_writer_test.cpp | ||
---|---|---|
33 | Can we follow the pattern of {"abc", 3} here and elsewhere in the patch. |
Here and elsewhere, instead of calling the StringView constructor explicitly, can you do {&c, string_len}?