diff options
| author | spl3g <spleefer6@yandex.ru> | 2025-03-22 21:41:16 +0300 |
|---|---|---|
| committer | spl3g <spleefer6@yandex.ru> | 2025-03-22 21:41:16 +0300 |
| commit | 62454373db4cd2add82ded0cf7b21f7d69ade597 (patch) | |
| tree | 1627133fe4567e9a3abb707af5e7289353410d5f /lib/arena_strings.c | |
| parent | ef5f52fb739c9f0d71c579f08363ef0dfd5c227d (diff) | |
Reorganize the lib
Diffstat (limited to 'lib/arena_strings.c')
| -rw-r--r-- | lib/arena_strings.c | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/lib/arena_strings.c b/lib/arena_strings.c deleted file mode 100644 index 3497c2e..0000000 --- a/lib/arena_strings.c +++ /dev/null @@ -1,53 +0,0 @@ -#include "arena_strings.h" - -const_string arena_cs_init(arena *a, int len) { - char *str = new(a, char, len+1); - const_string cs = {0}; - cs.data = str; - cs.len = len; - return cs; -} - -const_string arena_cs_append(arena *a, const_string dst, const_string src) { - char *str = new(a, char, dst.len+src.len + 1); - memcpy(str, dst.data, dst.len); - memcpy(str + dst.len, src.data, src.len + 1); - const_string cs = {0}; - cs.data = str; - cs.len = dst.len + src.len; - return cs; -} - -const_string arena_cs_concat(arena *a, const_string_da strings, const_string sep) { - if (strings.len == 0) { - return CS(""); - } else if (strings.len == 0) { - return *strings.data; - } - - int len = sep.len * (strings.len - 1); - for (size_t i = 0; i < strings.len; i++) { - len += (strings.data + i)->len; - }; - - char* str = arena_alloc(a, len); - int offset = 0; - - for (size_t i = 0; i < strings.len; i++) { - int curr_strlen = (strings.data + i)->len; - memcpy(str + offset, - (strings.data + i)->data, - curr_strlen); - - offset += curr_strlen; - - if (i != strings.len - 1) { - memcpy(str + offset, - sep.data, sep.len); - offset += sep.len; - } - }; - *(str + len + 1) = '\0'; - - return (const_string){str, len}; -}; |
