This commit is contained in:
Tenari
2026-05-30 19:40:41 -05:00
parent ddadc23a70
commit 45bdb7547b
2 changed files with 8 additions and 2 deletions
+1
View File
@@ -776,6 +776,7 @@ typedef struct StringArena {
fn StringChunkList allocStringChunkList(StringArena* a, String string);
fn void releaseStringChunkList(StringArena* a, StringChunkList* list);
fn String stringChunkToString(Arena* a, StringChunkList list);
fn String stringChunkToStringWithPadding(Arena* a, StringChunkList list, u32 extra);
fn void stringChunkListAppend(StringArena* a, StringChunkList* list, String string);
fn void stringChunkListDeleteLast(StringArena* a, StringChunkList* list);
fn StringChunkList stringChunkListInit(StringArena* a);
+7 -2
View File
@@ -40,10 +40,15 @@ fn void releaseStringChunkList(StringArena* a, StringChunkList* list) {
}
fn String stringChunkToString(Arena* a, StringChunkList list) {
return stringChunkToStringWithPadding(a, list, 0);
}
fn String stringChunkToStringWithPadding(Arena* a, StringChunkList list, u32 extra) {
u32 cap = list.total_size + 1 + extra;
String result = {
.length = list.total_size,
.capacity = list.total_size + 1,
.bytes = arenaAllocArray(a, u8, list.total_size+1),
.capacity = cap,
.bytes = arenaAllocArray(a, u8, cap),
};
MemoryZero(result.bytes, result.capacity);
// copy the string bytes out of the StringChunkList into the correctly-sized String