added StringBuilder_append_memory
This commit is contained in:
parent
3fb4d03f1b
commit
ebe6e58ef3
@ -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);
|
||||||
|
|||||||
@ -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;
|
||||||
|
|
||||||
|
|||||||
@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user