#include "StringBuilder.h" void StringBuilder_free(StringBuilder* b){ free(b->buffer.data); b->buffer = List_u8_construct(NULL, 0, 0); } str StringBuilder_getStr(StringBuilder* b){ List_u8_push(&b->buffer, '\0'); str result = str_construct((char*)b->buffer.data, b->buffer.len - 1, true); return result; } void StringBuilder_removeFromEnd(StringBuilder* b, u32 count){ if(count < b->buffer.len){ b->buffer.len -= count; } else{ b->buffer.len = 0; } } void StringBuilder_append_char(StringBuilder* b, char c){ List_u8_push(&b->buffer, c); } void StringBuilder_append_string(StringBuilder* b, str s){ List_u8_pushMany(&b->buffer, (u8*)s.data, s.len); } void StringBuilder_append_cstr(StringBuilder* b, char* s){ StringBuilder_append_string(b, str_construct(s, strlen(s), true)); } void StringBuilder_append_i64(StringBuilder* b, i64 n){ char buf[32]; sprintf_s(buf, sizeof(buf), "%llu", n); StringBuilder_append_cstr(b, buf); } void StringBuilder_append_u64(StringBuilder* b, u64 n){ char buf[32]; sprintf_s(buf, sizeof(buf), "%llu", n); StringBuilder_append_cstr(b, buf); } void StringBuilder_append_f64(StringBuilder* b, f64 n){ char buf[32]; sprintf_s(buf, sizeof(buf), "%lf", n); StringBuilder_append_cstr(b, buf); }