From 3158a49e571dffcb6a17227fed290856c333ae54 Mon Sep 17 00:00:00 2001 From: Soikk Date: Sat, 7 Jun 2025 21:41:00 +0200 Subject: Added streq and strdup¨ --- str/str.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'str/str.h') diff --git a/str/str.h b/str/str.h index 8afd0aa..4ba897f 100755 --- a/str/str.h +++ b/str/str.h @@ -57,13 +57,19 @@ str utostr(u64 n, int b); u64 strtou(str s); +int streq(str s1, str s2); + #define NUMSTRS(...) (sizeof((str[]){{0}, ##__VA_ARGS__})/sizeof(str)-1) +// look into calling vlen_nstrs from len_nstrs u64 len_nstrs(u64 n, ...); +u64 vlen_nstrs(u64 n, va_list args); + #define len_strs(...) \ len_nstrs(NUMSTRS(__VA_ARGS__), __VA_ARGS__) +// probably should change to append or something #define copy_str(dest, src) \ if(dest.ptr != NULL && src.ptr != NULL){ \ memcpy((dest).ptr+(dest).len, (src).ptr, (src).len); \ @@ -78,8 +84,16 @@ u64 len_nstrs(u64 n, ...); void copy_nstrs(str dst, u64 n, ...); +void vcopy_nstrs(str dst, u64 n, va_list args); + void move_nstrs(str dst, u64 n, ...); +void vmove_nstrs(str dst, u64 n, va_list args); + +str dup_nstrs(u64 n, ...); + +str vdup_nstrs(u64 n, va_list args); + #define copy_strs(d, ...) \ copy_nstrs(d, NUMSTRS(__VA_ARGS__), __VA_ARGS__); \ (d).len += len_nstrs(NUMSTRS(__VA_ARGS__), __VA_ARGS__) @@ -88,6 +102,9 @@ void move_nstrs(str dst, u64 n, ...); move_nstrs(d, NUMSTRS(__VA_ARGS__), __VA_ARGS__); \ (d).len += len_nstrs(NUMSTRS(__VA_ARGS__), __VA_ARGS__) +#define dup_strs(...) \ + dup_nstrs(NUMSTRS(__VA_ARGS__), __VA_ARGS__); + str read_delim(char *buf, char d); str sread_delim(char *buf, char d); -- cgit v1.2.3