From 3d92fc50597816dfee09137fd2c4f0cc81935d56 Mon Sep 17 00:00:00 2001 From: steven-na Date: Sat, 15 Aug 2026 05:11:44 -0700 Subject: Added string procs --- src/string.h | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'src/string.h') diff --git a/src/string.h b/src/string.h index 999add8..a2e69c9 100644 --- a/src/string.h +++ b/src/string.h @@ -10,21 +10,28 @@ typedef struct { u64 len; } strng_t; +typedef struct { + u64 start; + u64 end; + u64 max; +char const *string; +} strng_view_t; + strng_t * strng_new(smrt_arena_t *arena, u64 size); strng_t *strng_from(smrt_arena_t *arena, char const *c); strng_t * strng_dup(smrt_arena_t *arena, strng_t const *src); char * strng_str(smrt_arena_t *arena, strng_t const *string); i32 strng_set(strng_t *string, char const *c); +// Append to strng, returns -1 if no space, new len otherwise + i32 strng_app(strng_t *dest, strng_t const *source); +// Append char* to strng, returns -1 if no space, new len otherwise + i32 strng_app_c(strng_t *dest, char const *source); +// Append sv to strng, returns -1 if no space, new len otherwise + i32 strng_app_v(strng_t *dest, strng_view_t const *source); void strng_clear(strng_t *string); -#define STRNG_FMT(s) (i32)s->len, (char *)((u8*)s+STRNG_BASE_POS) - -typedef struct { - u64 start; - u64 end; - u64 max; -char const *string; -} strng_view_t; +#define STRNG_TO(s) (char *)((u8*)(s)+STRNG_BASE_POS) +#define STRNG_FMT(s) (i32)s->len, (char *)((u8*)(s)+STRNG_BASE_POS) static inline strng_view_t sv_from(strng_t *string) { return (strng_view_t){ -- cgit v1.2.3