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 StringChunkList allocStringChunkList(StringArena* a, String string);
fn void releaseStringChunkList(StringArena* a, StringChunkList* list); fn void releaseStringChunkList(StringArena* a, StringChunkList* list);
fn String stringChunkToString(Arena* 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 stringChunkListAppend(StringArena* a, StringChunkList* list, String string);
fn void stringChunkListDeleteLast(StringArena* a, StringChunkList* list); fn void stringChunkListDeleteLast(StringArena* a, StringChunkList* list);
fn StringChunkList stringChunkListInit(StringArena* a); 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) { 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 = { String result = {
.length = list.total_size, .length = list.total_size,
.capacity = list.total_size + 1, .capacity = cap,
.bytes = arenaAllocArray(a, u8, list.total_size+1), .bytes = arenaAllocArray(a, u8, cap),
}; };
MemoryZero(result.bytes, result.capacity); MemoryZero(result.bytes, result.capacity);
// copy the string bytes out of the StringChunkList into the correctly-sized String // copy the string bytes out of the StringChunkList into the correctly-sized String