[libc-commits] [libc] [libc] Template StringConverter pop function to avoid duplicate code (PR #152204)
Michael Jones via libc-commits
libc-commits at lists.llvm.org
Tue Aug 5 14:34:25 PDT 2025
================
@@ -64,42 +63,23 @@ template <typename T> class StringConverter {
if (!src_elements_read.has_value())
return Error(src_elements_read.error());
- if (cr.sizeAsUTF32() > num_to_write) {
- cr.clear();
- return Error(-1);
- }
-
- src_idx += src_elements_read.value();
- }
-
- auto out = cr.pop_utf32();
- if (out.has_value() && out.value() == L'\0')
- src_len = src_idx;
-
- num_to_write--;
-
- return out;
- }
-
- ErrorOr<char8_t> popUTF8() {
- if (num_to_write == 0)
- return Error(-1);
-
- if (cr.isEmpty() || src_idx == 0) {
- auto src_elements_read = pushFullCharacter();
- if (!src_elements_read.has_value())
- return Error(src_elements_read.error());
+ size_t size;
+ if constexpr (cpp::is_same_v<CharType, char8_t>)
+ size = cr.sizeAsUTF8();
+ else
+ size = cr.sizeAsUTF32();
----------------
michaelrj-google wrote:
would it make sense to also template `sizeAs`?
https://github.com/llvm/llvm-project/pull/152204
More information about the libc-commits
mailing list