From 154bf6f53529e88dfa03d6ff5034b575f92cdbb5 Mon Sep 17 00:00:00 2001 From: nasr Date: Tue, 14 Apr 2026 23:11:49 +0200 Subject: feature(setup): base implementation --- source/base/base_string.h | 78 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 source/base/base_string.h (limited to 'source/base/base_string.h') diff --git a/source/base/base_string.h b/source/base/base_string.h new file mode 100644 index 0000000..c4b9f94 --- /dev/null +++ b/source/base/base_string.h @@ -0,0 +1,78 @@ +#ifndef BASE_STRING_H +#define BASE_STRING_H + +#define PushString(arena, count) (string8){ .data = (PushArrayZero(arena, u8, (count))), .size = (count) } +#define StringCast(data, size) (string8){(u8 *)(data), (u64)(size) } +#define StringPCast(data, size) (string8 *){(u8 *)(data), (u64)(size) } + +#define StringFmt "%.*s" +#define ULongFmt "%lu" +#define ULLongFmt "%llu" + +typedef struct string8 string8; +struct string8 +{ + u8 *data; + u64 size; +}; + +typedef struct string16 string16; +struct string16 +{ + u16 *data; + u64 size; +}; + +typedef struct string32 string32; +struct string32 +{ + u32 *data; + u64 size; +}; + +//- string linked list implementation +typedef struct string8_node string8_node; +struct string8_node +{ + string8 *next; + string8 string; +}; + +typedef struct string8_list string8_list; +struct string8_list +{ + string8 *first; + string8 *last; + u64 count; +}; + +typedef struct string16_list string16_list; +struct string16_list +{ + string16 *next; + string16 string; +}; + +typedef struct string32_list string32_list; +struct string32_list +{ + string32 *first; + string32 *last; + u64 count; +}; + +internal b8 +string8_cmp(string8 a, string8 b) +{ + if (a.size != b.size) return 0; + return (b8)(memcmp(a.data, b.data, a.size) == 0); +} + +internal void +string8_appendc(string8 *buf, u8 c) +{ + buf->data[buf->size] = c; + buf->size += 1; +} + +#endif /* BASE_STRING_H */ -- cgit v1.3