#include "string-builder.h" #include #include void string_builder__append_ntimes (STRING_BUILDER sb, char c, size_t n) { DYNAMIC_ARRAY__ENSURE_CAPACITY (*sb, n); memset (sb->items + sb->count, c, n); sb->count += n; } void string_builder__append_cstrs (STRING_BUILDER sb, ...) { va_list args; va_start (args, sb); const char *arg = va_arg (args, const char *); while (arg) { STRING_BUILDER__APPEND_CSTR(*sb, arg); arg = va_arg (args, const char *); } va_end (args); } void string_builder__printf (STRING_BUILDER sb, const char *format, ...) { va_list args; va_start (args, format); int size = vsnprintf (NULL, 0, format, args); va_end (args); ASSERT (size >= 0); DYNAMIC_ARRAY__ENSURE_CAPACITY (*sb, size + 1); va_start (args, format); vsnprintf (&sb->items[sb->count], size + 1, format, args); va_end (args); sb->count += size; }