diff --git a/src/string/StringBuilder.c b/src/string/StringBuilder.c index 8db4361..dc4a1a9 100644 --- a/src/string/StringBuilder.c +++ b/src/string/StringBuilder.c @@ -4,12 +4,21 @@ void StringBuilder_free(StringBuilder* b){ free(b->buffer.data); } -str StringBuilder_build(StringBuilder* b){ +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); diff --git a/src/string/StringBuilder.h b/src/string/StringBuilder.h index 3d5d766..2e99c66 100644 --- a/src/string/StringBuilder.h +++ b/src/string/StringBuilder.h @@ -1,9 +1,5 @@ #pragma once -#if __cplusplus -extern "C" { -#endif - #include "../collections/List.h" #include "str.h" @@ -16,6 +12,7 @@ static inline StringBuilder StringBuilder_construct(u32 initial_size) { } void StringBuilder_free(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); @@ -26,7 +23,3 @@ void StringBuilder_append_f64(StringBuilder* b, f64 a); // adds '\0' to the buffer and returns pointer to buffer content str StringBuilder_getStr(StringBuilder* b); - -#if __cplusplus -} -#endif \ No newline at end of file