added StringBuilder_append_memory

This commit is contained in:
Timerix 2025-07-19 04:41:26 +03:00
parent 3fb4d03f1b
commit ebe6e58ef3
3 changed files with 20 additions and 4 deletions

View File

@ -1,6 +1,7 @@
#pragma once #pragma once
#include "../collections/List.h" #include "../collections/List.h"
#include "../collections/Array.h"
#include "str.h" #include "str.h"
typedef struct StringBuilder { typedef struct StringBuilder {
@ -16,10 +17,11 @@ void StringBuilder_destroy(StringBuilder* b);
void StringBuilder_removeFromEnd(StringBuilder* b, u32 count); void StringBuilder_removeFromEnd(StringBuilder* b, u32 count);
void StringBuilder_append_char(StringBuilder* b, char c); void StringBuilder_append_char(StringBuilder* b, char c);
void StringBuilder_append_cstr(StringBuilder* b, char* s); 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_i64(StringBuilder* b, i64 a);
void StringBuilder_append_u64(StringBuilder* b, u64 a); void StringBuilder_append_u64(StringBuilder* b, u64 a);
void StringBuilder_append_f64(StringBuilder* b, f64 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 // adds '\0' to the buffer and returns pointer to buffer content
str StringBuilder_getStr(StringBuilder* b); str StringBuilder_getStr(StringBuilder* b);

View File

@ -6,7 +6,7 @@
typedef struct str { typedef struct str {
char* data; char* data;
u32 size; u32 size; // size of data in bytes without \0
bool isZeroTerminated; bool isZeroTerminated;
} str; } str;

View File

@ -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); List_push_size(&b->buffer, s.data, s.size);
} }
void StringBuilder_append_cstr(StringBuilder* b, char* s){ 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){ void StringBuilder_append_i64(StringBuilder* b, i64 n){
@ -51,3 +54,14 @@ void StringBuilder_append_f64(StringBuilder* b, f64 n){
sprintf(buf, "%lf", n); sprintf(buf, "%lf", n);
StringBuilder_append_cstr(b, buf); 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));
}
}