diff --git a/include/string/StringBuilder.h b/include/string/StringBuilder.h index a3596b7..d9d0861 100755 --- a/include/string/StringBuilder.h +++ b/include/string/StringBuilder.h @@ -1,6 +1,7 @@ #pragma once #include "../collections/List.h" +#include "../collections/Array.h" #include "str.h" typedef struct StringBuilder { @@ -16,10 +17,11 @@ void StringBuilder_destroy(StringBuilder* b); 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_string(StringBuilder* b, str 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); diff --git a/include/string/str.h b/include/string/str.h index b13a43f..2d83c49 100755 --- a/include/string/str.h +++ b/include/string/str.h @@ -6,7 +6,7 @@ typedef struct str { char* data; - u32 size; + u32 size; // size of data in bytes without \0 bool isZeroTerminated; } str; diff --git a/src/string/StringBuilder.c b/src/string/StringBuilder.c index 9130e24..cc9cac0 100755 --- a/src/string/StringBuilder.c +++ b/src/string/StringBuilder.c @@ -26,12 +26,15 @@ void StringBuilder_append_char(StringBuilder* b, char c){ } -void StringBuilder_append_string(StringBuilder* b, str s){ +void StringBuilder_append_str(StringBuilder* b, str s){ + if(s.data == NULL) + return; + List_push_size(&b->buffer, s.data, s.size); } void StringBuilder_append_cstr(StringBuilder* b, char* s){ - StringBuilder_append_string(b, str_construct(s, strlen(s), true)); + StringBuilder_append_str(b, str_construct(s, strlen(s), true)); } void StringBuilder_append_i64(StringBuilder* b, i64 n){ @@ -51,3 +54,14 @@ void StringBuilder_append_f64(StringBuilder* b, f64 n){ sprintf(buf, "%lf", n); StringBuilder_append_cstr(b, buf); } + +void StringBuilder_append_memory(StringBuilder* b, Array mem) { + if(mem.data == NULL) + return; + + char buf[8]; + for (u32 i=0; i < mem.size; i++) { + sprintf(buf, "%02x", ((u8*)mem.data)[i]); + StringBuilder_append_str(b, str_construct(buf, 2, true)); + } +}