move string_chunk to base

This commit is contained in:
Tenari
2026-03-31 16:39:47 -05:00
parent 74330dc268
commit 50e06f064a
8 changed files with 31 additions and 37 deletions
View File
+29
View File
@@ -632,5 +632,34 @@ fn void tctxLaneBarrierWait(void *broadcast_ptr, u64 broadcast_size, u64 broadca
#define LaneSyncu64(pointer, src_lane_idx) tctxLaneBarrierWait((pointer), sizeof(*(pointer)), (src_lane_idx)) #define LaneSyncu64(pointer, src_lane_idx) tctxLaneBarrierWait((pointer), sizeof(*(pointer)), (src_lane_idx))
#define LaneRange(count) mRangeFromNIdxMCount(LaneIdx(), LaneCount(), (count)) #define LaneRange(count) mRangeFromNIdxMCount(LaneIdx(), LaneCount(), (count))
///// StringChunk stuff
#ifndef STRING_CHUNK_PAYLOAD_SIZE
#define STRING_CHUNK_PAYLOAD_SIZE (64 - sizeof(StringChunk*))
#endif
typedef struct StringChunk {
struct StringChunk *next; // essentially a header, followed by a fixed maximum str bytes
} StringChunk;
typedef struct StringChunkList {
StringChunk* first;
StringChunk* last;
u64 count;
u64 total_size;
} StringChunkList;
typedef struct StringArena {
Arena a;
StringChunk* first_free_str_chunk;
Mutex mutex;
} StringArena;
fn StringChunkList allocStringChunkList(StringArena* a, String string);
fn void releaseStringChunkList(StringArena* a, StringChunkList* list);
fn String stringChunkToString(Arena* a, StringChunkList list);
fn void stringChunkListAppend(StringArena* a, StringChunkList* list, String string);
fn void stringChunkListDeleteLast(StringArena* a, StringChunkList* list);
fn StringChunkList stringChunkListInit(StringArena* a);
fn void stringChunkCopyToBuffer(StringChunkList* list, u8* buffer, u32 len);
#endif// BASE_ALL_H #endif// BASE_ALL_H
+1
View File
@@ -8,5 +8,6 @@
#include "string.c" #include "string.c"
#include "tctx.c" #include "tctx.c"
#include "thread.c" #include "thread.c"
#include "string_chunk.c"
#endif // BASE_IMPL_C #endif // BASE_IMPL_C
@@ -1,4 +1,4 @@
#include "string_chunk.h" #include "all.h"
fn StringChunkList allocStringChunkList(StringArena* a, String string) { fn StringChunkList allocStringChunkList(StringArena* a, String string) {
StringChunkList result = {0}; StringChunkList result = {0};
-1
View File
@@ -10,7 +10,6 @@
#include "base/impl.c" #include "base/impl.c"
#include "lib/network.c" #include "lib/network.c"
#include "render.c" #include "render.c"
#include "string_chunk.c"
//#include "assets/asset1.h" //#include "assets/asset1.h"
//#include "assets/asset2.h" //#include "assets/asset2.h"
//#include "assets/asset3.h" //#include "assets/asset3.h"
-1
View File
@@ -1,5 +1,4 @@
#include "../base/all.h" #include "../base/all.h"
#include "../string_chunk.h"
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
-1
View File
@@ -14,7 +14,6 @@
#define NET_OUTGOING_MESSAGE_QUEUE_LEN 64 #define NET_OUTGOING_MESSAGE_QUEUE_LEN 64
#include "lib/network.c" #include "lib/network.c"
#include "render.c" #include "render.c"
#include "string_chunk.c"
///// CONSTANTS ///// CONSTANTS
#define MAX_THINGS (2<<18) #define MAX_THINGS (2<<18)
-33
View File
@@ -1,33 +0,0 @@
#ifndef STRING_CHUNK_H
#define STRING_CHUNK_H
#include "base/all.h"
#define STRING_CHUNK_PAYLOAD_SIZE (64 - sizeof(StringChunk*))
typedef struct StringChunk {
struct StringChunk *next; // essentially a header, followed by a fixed maximum str bytes
} StringChunk;
typedef struct StringChunkList {
StringChunk* first;
StringChunk* last;
u64 count;
u64 total_size;
} StringChunkList;
typedef struct StringArena {
Arena a;
StringChunk* first_free_str_chunk;
Mutex mutex;
} StringArena;
fn StringChunkList allocStringChunkList(StringArena* a, String string);
fn void releaseStringChunkList(StringArena* a, StringChunkList* list);
fn String stringChunkToString(Arena* a, StringChunkList list);
fn void stringChunkListAppend(StringArena* a, StringChunkList* list, String string);
fn void stringChunkListDeleteLast(StringArena* a, StringChunkList* list);
fn StringChunkList stringChunkListInit(StringArena* a);
fn void stringChunkCopyToBuffer(StringChunkList* list, u8* buffer, u32 len);
#endif //STRING_CHUNK_H