From e0b2e9126d74ce03ddb1054be709126723c7e7a5 Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Sun, 30 Aug 2020 18:17:02 +0200 Subject: Added cstr_destr(...) for destroying multiple cstr_t at once. --- stc/cstr.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/stc/cstr.h b/stc/cstr.h index b5aab764..c695a1ba 100644 --- a/stc/cstr.h +++ b/stc/cstr.h @@ -46,6 +46,12 @@ static cstr_t cstr_init = {(char* ) &_cstr_nullrep[2]}; #define cstr_front(s) (s).str[0] #define cstr_back(s) (s).str[_cstr_size(s) - 1] /* may have side effect */ #define cstr_npos ((size_t) (-1)) +/* destroy multiple strings: */ +#define cstr_destr(...) do { \ + cstr_t *__objs[] = {__VA_ARGS__}; \ + for (size_t i=0; i cstr_capacity(*self)) { + /* handle self append */ size_t off = (size_t) (str - self->str); cstr_reserve(self, newlen * 3 / 2); if (off <= oldlen) str = self->str + off; } - memmove(&self->str[oldlen], str, len); + memcpy(&self->str[oldlen], str, len); self->str[_cstr_size(*self) = newlen] = '\0'; } return self; -- cgit v1.2.3