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