From 751192173fe5855358b02b86e4c90fdbb8599f76 Mon Sep 17 00:00:00 2001 From: Abdelrahman Said Date: Mon, 7 Oct 2024 08:03:56 +0100 Subject: [PATCH] Implement very basic Str8 type --- src/core/strings/str8/str8.c | 27 +++++++++++++++++++++++++++ src/core/strings/str8/str8.h | 25 +++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 src/core/strings/str8/str8.c create mode 100644 src/core/strings/str8/str8.h diff --git a/src/core/strings/str8/str8.c b/src/core/strings/str8/str8.c new file mode 100644 index 0000000..faa4355 --- /dev/null +++ b/src/core/strings/str8/str8.c @@ -0,0 +1,27 @@ +#include "str8.h" +#include + +Str8 wapp_str8_lit(char *str) { + if (!str) { + return (Str8){.capacity = 0, .size = 0, .buf = (u8 *)""}; + } + + u64 size = strlen(str); + return (Str8){.capacity = size, .size = size, .buf = (u8 *)str}; +} + +char wapp_str8_get(const Str8 *str, u64 index) { + if (index >= str->size) { + return '\0'; + } + + return (char)(str->buf[index]); +} + +void wapp_str8_set(Str8 *str, u64 index, char c) { + if (index >= str->size) { + return; + } + + str->buf[index] = (u8)c; +} diff --git a/src/core/strings/str8/str8.h b/src/core/strings/str8/str8.h new file mode 100644 index 0000000..3f26b2d --- /dev/null +++ b/src/core/strings/str8/str8.h @@ -0,0 +1,25 @@ +#ifndef STR8_H +#define STR8_H + +#include "aliases.h" + +#ifdef __cplusplus +BEGIN_C_LINKAGE +#endif // !__cplusplus + +typedef struct str8 Str8; +struct str8 { + u64 capacity; + u64 size; + u8 *buf; +}; + +Str8 wapp_str8_lit(char *str); +char wapp_str8_get(const Str8 *str, u64 index); +void wapp_str8_set(Str8 *str, u64 index, char c); + +#ifdef __cplusplus +END_C_LINKAGE +#endif // !__cplusplus + +#endif // !STR8_H