From 4e77bc7164070d7ffafdee1ba6ce3bb1aaf10746 Mon Sep 17 00:00:00 2001 From: nasr Date: Mon, 2 Mar 2026 22:44:17 +0000 Subject: feature(main): loading file + bug fixes structure improvement --- source/base/base_string.h | 45 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 7 deletions(-) (limited to 'source/base/base_string.h') diff --git a/source/base/base_string.h b/source/base/base_string.h index 5f875e0..941dc53 100644 --- a/source/base/base_string.h +++ b/source/base/base_string.h @@ -1,15 +1,46 @@ #ifndef BASE_STRING_H #define BASE_STRING_H -#define _StringCast (string) -#define StringCast { .data (u8 *)(string), .size = (sizeof((string)) - 1)} -#define PushString (Arena, Size) StringCast{.data = PushArray((arena), PushStruct(u8), (Size)), .size = (u64)(Size)} +#include -typedef struct string string; -struct string +#define StringLit(string) \ + (string8){ .data = (u8 *)(string), .size = (sizeof(string) - 1) } + + #define PushString(arena, size) \ + (string8){ (u8 *)PushArray((arena), u8, (size)), (u64)(size) } + +typedef struct string8 string8; +struct string8 { - u8 *data; - u64 size; + u8 *data; + u64 size; }; +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 u64 +string8_to_u64(u8 *buf, umm len) +{ + u64 value = 0; + for (umm i = 0; i < len; ++i) + { + u8 c = buf[i]; + if (c < '0' || c > '9') break; + value = value * 10 + (c - '0'); + } + return value; +} + +internal void +string8_append_char(string8 *buf, u8 c) +{ + buf->data[buf->size] = c; + buf->size += 1; +} + #endif /* BASE_STRING_H */ -- cgit v1.3