54 lines
1.3 KiB
C
54 lines
1.3 KiB
C
#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);
|
|
}
|