[libc-commits] [libc] [libc] Template the writing mode for the writer class (PR #111559)

Joseph Huber via libc-commits libc-commits at lists.llvm.org
Wed Mar 12 10:20:34 PDT 2025


================
@@ -92,40 +107,69 @@ struct WriteBuffer {
   // this with an empty string will flush the buffer if relevant.
 
   LIBC_INLINE int overflow_write(cpp::string_view new_str) {
-    switch (write_mode) {
-    case WriteMode::FILL_BUFF_AND_DROP_OVERFLOW:
+#ifdef LIBC_COPT_PRINTF_RUNTIME_DISPATCH
+    if (write_mode_ == WriteMode::FILL_BUFF_AND_DROP_OVERFLOW)
       return fill_remaining_to_buff(new_str);
-    case WriteMode::FLUSH_TO_STREAM:
+    else if (write_mode_ == WriteMode::FLUSH_TO_STREAM)
       return flush_to_stream(new_str);
-    case WriteMode::RESIZE_AND_FILL_BUFF:
+    else if (write_mode_ == WriteMode::RESIZE_AND_FILL_BUFF)
       return resize_and_write(new_str);
-    }
+#else
+    if constexpr (write_mode == WriteMode::FILL_BUFF_AND_DROP_OVERFLOW)
+      return fill_remaining_to_buff(new_str);
+    else if constexpr (write_mode == WriteMode::FLUSH_TO_STREAM)
+      return flush_to_stream(new_str);
+    else if constexpr (write_mode == WriteMode::RESIZE_AND_FILL_BUFF)
+      return resize_and_write(new_str);
+#endif
----------------
jhuber6 wrote:

Done

https://github.com/llvm/llvm-project/pull/111559


More information about the libc-commits mailing list