diff options
| author | fschildt <florian.schildt@protonmail.com> | 2025-08-22 15:23:11 +0200 | 
|---|---|---|
| committer | fschildt <florian.schildt@protonmail.com> | 2025-10-15 11:33:23 +0200 | 
| commit | 04e4627e6c11254ee6f49edf5feb1b8d711da41a (patch) | |
| tree | e28f2e62d3e1b83f9686cdeb102e3f47379e6793 /src/basic/string32.h | |
Diffstat (limited to 'src/basic/string32.h')
| -rw-r--r-- | src/basic/string32.h | 60 | 
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  | 
