diff options
| author | Martin Kagamino Lehoux <martin@lehoux.net> | 2025-08-24 10:40:56 +0200 |
|---|---|---|
| committer | Martin Kagamino Lehoux <martin@lehoux.net> | 2025-08-27 11:46:25 +0200 |
| commit | dd2c70e878e4bc7fcf26f33523a45f0d854a29e4 (patch) | |
| tree | 28e0d7c8e3f213bc77c82ffbbb0bb2ba5ff5f253 /include/str.h | |
| parent | 086cb73ef88a4962345b8284e47cea52da428135 (diff) | |
code simplification & macros
Diffstat (limited to 'include/str.h')
| -rw-r--r-- | include/str.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/include/str.h b/include/str.h index 781d910..153eebc 100644 --- a/include/str.h +++ b/include/str.h @@ -16,11 +16,15 @@ typedef struct { byte *data; size len; } StrView; -i32 Str_equals(Str a, Str b); u64 Str_hash64(Str s); Str Str_copy(Arena *a, byte *data, size len); i32 Str_fprint(FILE *w, Str s); StrView Str_view(byte *data, size len); -i32 StrView_fprint(FILE *w, StrView s); 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) |
