aboutsummaryrefslogtreecommitdiff
path: root/src/basic/string32.h
diff options
context:
space:
mode:
authorfschildt <florian.schildt@protonmail.com>2025-08-22 15:23:11 +0200
committerfschildt <florian.schildt@protonmail.com>2025-08-22 15:23:11 +0200
commit2050c0e0576f05156f192aa4caf48834d2f28b14 (patch)
treeee58bd35b0df0a1bacfbc9700ed99ce80c99294e /src/basic/string32.h
first commitHEADmaster
Diffstat (limited to 'src/basic/string32.h')
-rw-r--r--src/basic/string32.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/basic/string32.h b/src/basic/string32.h
new file mode 100644
index 0000000..3af5fb3
--- /dev/null
+++ b/src/basic/string32.h
@@ -0,0 +1,60 @@
+#ifndef STRING32_H
+#define STRING32_H
+
+#include <basic/basic.h>
+#include <basic/arena.h>
+#include <os/os.h>
+
+
+
+typedef struct {
+ u32 len;
+ u32 codepoints[];
+} String32;
+
+
+typedef struct {
+ u32 cursor;
+ u32 len;
+ u32 max_len;
+ u32 codepoints[];
+} String32Buffer;
+
+
+
+String32 *string32_create_from_ascii(Arena *arena, char *ascii);
+String32 *string32_create_from_string32(Arena *arena, String32 *src);
+String32 *string32_create_from_string32_with_len(Arena *arena, String32 *src, size_t len);
+String32 *string32_create_from_u32_array(Arena *arena, u32 *buffer, size_t len);
+
+b32 string32_equal(String32 *str1, String32 *str2);
+void string32_print(String32 *str);
+
+
+
+String32Buffer* string32_buffer_create(Arena *arena, size_t max_len);
+void string32_buffer_init_in_place(String32Buffer *buffer, size_t max_len);
+
+String32 *string32_buffer_to_string32(Arena *arena, String32Buffer *buffer);
+String32 *string32_buffer_to_string32_with_len(Arena *arena, String32Buffer *buffer, size_t len);
+
+void string32_buffer_reset(String32Buffer *buffer);
+void string32_buffer_print(String32Buffer *buffer);
+
+void string32_buffer_append_ascii_cstr(String32Buffer *buffer, char *ascii);
+void string32_buffer_append_string32(String32Buffer *buffer, String32 *str);
+void string32_buffer_append_string32_buffer(String32Buffer *buffer, String32Buffer *src);
+
+b32 string32_buffer_equal_string32(String32Buffer *buffer, String32 *str);
+void string32_buffer_copy_string32(String32Buffer *buffer, String32 *str);
+void string32_buffer_copy_string32_buffer(String32Buffer *dest, String32Buffer *src);
+
+void string32_buffer_edit(String32Buffer *buffer, OSEventKeyPress key_press);
+b32 string32_buffer_insert(String32Buffer *buffer, u32 codepoint);
+b32 string32_buffer_delete_right(String32Buffer *buffer);
+b32 string32_buffer_delete_left(String32Buffer *buffer);
+void string32_buffer_move_cursor_left(String32Buffer *buffer);
+void string32_buffer_move_cursor_right(String32Buffer *buffer);
+
+
+#endif // STRING32_H