#pragma once #include "../collections/List.h" #include "../collections/Array.h" #include "str.h" typedef struct StringBuilder { List buffer; } StringBuilder; static inline StringBuilder StringBuilder_alloc(u32 initial_size) { return (StringBuilder){ .buffer = List_alloc_size(initial_size) }; } void StringBuilder_destroy(StringBuilder* b); /// @param count set to -1 to clear StringBuilder void StringBuilder_removeFromEnd(StringBuilder* b, u32 count); void StringBuilder_append_char(StringBuilder* b, char c); void StringBuilder_append_cstr(StringBuilder* b, char* s); void StringBuilder_append_str(StringBuilder* b, str s); void StringBuilder_append_i64(StringBuilder* b, i64 a); void StringBuilder_append_u64(StringBuilder* b, u64 a); void StringBuilder_append_f64(StringBuilder* b, f64 a); void StringBuilder_append_memory(StringBuilder* b, Array mem); // adds '\0' to the buffer and returns pointer to buffer content str StringBuilder_getStr(StringBuilder* b);