From 8ea6a3c8621287d11296b8300029f32a27743d9a Mon Sep 17 00:00:00 2001 From: nasr Date: Thu, 16 Apr 2026 17:10:02 +0200 Subject: feature(checkpoint): checkpoint cleaning up base library --- source/base/base_string.h | 83 ++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 75 insertions(+), 8 deletions(-) (limited to 'source/base/base_string.h') diff --git a/source/base/base_string.h b/source/base/base_string.h index d879450..eb51e65 100644 --- a/source/base/base_string.h +++ b/source/base/base_string.h @@ -1,17 +1,84 @@ #ifndef BASE_STRING_H #define BASE_STRING_H -// let's use this for strings -// to better differentiate between stuff -typedef u8 s8; -typedef struct string string ; +#define PushString8(arena, count) (string8){ .data = (PushArrayZero(arena, u8, (count))), .size = (count) } +#define PushString16(arena, count) (string16){ .data = (PushArrayZero(arena, u16, (count))), .size = (count) } +#define PushString32(arena, count) (string32){ .data = (PushArrayZero(arena, u32, (count))), .size = (count) } -struct string +#define String8(data, size) (string8){(u8 *)(data), (u64)(size) } +#define String16(data, size) (string16){(u16 *)(data), (u64)(size) } +#define String32(data, size) (string32){(u32 *)(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 { - s8 *data; - umm size; + string8 *next; + string8 string; }; -// TODO(nasr): helper functions for 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