[libc-commits] [libc] [libc] Character converter skeleton class (PR #143619)
Uzair Nawaz via libc-commits
libc-commits at lists.llvm.org
Tue Jun 10 15:38:51 PDT 2025
https://github.com/uzairnawaz created https://github.com/llvm/llvm-project/pull/143619
Made CharacterConverter class skeleton
>From 4de427f6c44acad9299922ec2844174ee14ddb37 Mon Sep 17 00:00:00 2001
From: Uzair Nawaz <uzairnawaz at google.com>
Date: Tue, 10 Jun 2025 22:36:36 +0000
Subject: [PATCH] character converter skeleton class
---
libc/src/__support/wchar/CMakeLists.txt | 24 +++++++++++++++++++
.../__support/wchar/character_converter.cpp | 2 ++
.../src/__support/wchar/character_converter.h | 20 ++++++++++++++++
libc/src/__support/wchar/mbstate.h | 8 +++++++
libc/src/__support/wchar/utf_ret.h | 6 +++++
5 files changed, 60 insertions(+)
create mode 100644 libc/src/__support/wchar/CMakeLists.txt
create mode 100644 libc/src/__support/wchar/character_converter.cpp
create mode 100644 libc/src/__support/wchar/character_converter.h
create mode 100644 libc/src/__support/wchar/mbstate.h
create mode 100644 libc/src/__support/wchar/utf_ret.h
diff --git a/libc/src/__support/wchar/CMakeLists.txt b/libc/src/__support/wchar/CMakeLists.txt
new file mode 100644
index 0000000000000..c1f402767235f
--- /dev/null
+++ b/libc/src/__support/wchar/CMakeLists.txt
@@ -0,0 +1,24 @@
+add_header_library(
+ mbstate
+ HDRS
+ mbstate.h
+ DEPENDS
+ libc.hdr.types.wchar_t
+)
+
+add_header_library(
+ character_converter
+ HDRS
+ character_converter.h
+ DEPENDS
+ libc.hdr.types.wchar_t
+ .mbstate
+ .utf_ret
+)
+
+add_header_library(
+ utf_ret
+ HDRS
+ utf_ret.h
+ DEPENDS
+)
diff --git a/libc/src/__support/wchar/character_converter.cpp b/libc/src/__support/wchar/character_converter.cpp
new file mode 100644
index 0000000000000..139597f9cb07c
--- /dev/null
+++ b/libc/src/__support/wchar/character_converter.cpp
@@ -0,0 +1,2 @@
+
+
diff --git a/libc/src/__support/wchar/character_converter.h b/libc/src/__support/wchar/character_converter.h
new file mode 100644
index 0000000000000..1800fe16eb14b
--- /dev/null
+++ b/libc/src/__support/wchar/character_converter.h
@@ -0,0 +1,20 @@
+
+#include "src/__support/wchar/mbstate.h"
+#include "src/__support/wchar/utf_ret.h"
+#include "hdr/types/wchar_t.h"
+
+class CharacterConverter {
+private:
+ mbstate_t* state;
+
+public:
+ CharacterConverter();
+
+ bool isComplete();
+
+ int push(char utf8_byte);
+ int push(wchar_t utf32);
+
+ utf_ret<char> pop_utf8();
+ utf_ret<wchar_t> pop_utf32();
+};
diff --git a/libc/src/__support/wchar/mbstate.h b/libc/src/__support/wchar/mbstate.h
new file mode 100644
index 0000000000000..c0af608c37623
--- /dev/null
+++ b/libc/src/__support/wchar/mbstate.h
@@ -0,0 +1,8 @@
+
+#include "hdr/types/wchar_t.h"
+
+struct mbstate_t {
+ wchar_t partial;
+ unsigned char bits_processed;
+ unsigned char total_bytes;
+};
diff --git a/libc/src/__support/wchar/utf_ret.h b/libc/src/__support/wchar/utf_ret.h
new file mode 100644
index 0000000000000..533f4cb952f4b
--- /dev/null
+++ b/libc/src/__support/wchar/utf_ret.h
@@ -0,0 +1,6 @@
+
+template <typename T>
+struct utf_ret {
+ T out;
+ int error;
+};
More information about the libc-commits
mailing list