From cf534d762754860ed5b714974f99acd282d48b3b Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Wed, 8 Apr 2026 13:14:27 +0200 Subject: Restructure into src/{std,json}/ Co-Authored-By: Claude Sonnet 4.6 --- src/std/str.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/std/str.h (limited to 'src/std/str.h') diff --git a/src/std/str.h b/src/std/str.h new file mode 100644 index 0000000..526db63 --- /dev/null +++ b/src/std/str.h @@ -0,0 +1,30 @@ +#pragma once +#include +#include +#include + +#include "memory.h" +#include "types.h" + +typedef struct { + byte *data; + size len; +} Str; +u64 Str_hash64(Str s); +Str Str_copy(Arena *a, byte *data, size len); +i32 Str_fprint(FILE *w, Str s); + +typedef struct { + byte *data; + size len; +} StrView; +StrView Str_view(byte *data, size len); +Str StrView_copy(Arena *a, StrView s); + +// Macros working with both types +// Returns 1 if strings are equal, 0 otherwise +#define Str_equals(a, b) \ + ((a).len == (b).len) && (!(a).len || !memcmp((a).data, (b).data, (a).len)) +#define Str_fprint(w, s) fprintf(w, "%.*s", (i32)(s).len, (s).data) +#define S(s) \ + (Str) { s, lengthof(s) } -- cgit v1.3