mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-15 01:28:07 +00:00
simplify serial pushes for u32 and u64
This commit is contained in:
+53
-56
@@ -2637,16 +2637,18 @@ fuzzy_match_range_list_copy(Arena *arena, FuzzyMatchRangeList *src)
|
|||||||
//~ NOTE(allen): Serialization Helpers
|
//~ NOTE(allen): Serialization Helpers
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
str8_serial_begin(Arena *arena, String8List *srl){
|
str8_serial_begin(Arena *arena, String8List *srl)
|
||||||
|
{
|
||||||
String8Node *node = push_array(arena, String8Node, 1);
|
String8Node *node = push_array(arena, String8Node, 1);
|
||||||
node->string.str = push_array_no_zero(arena, U8, 0);
|
node->string.str = push_array_no_zero(arena, U8, 0);
|
||||||
srl->first = srl->last = node;
|
srl->first = srl->last = node;
|
||||||
srl->node_count = 1;
|
srl->node_count = 1;
|
||||||
srl->total_size = 0;
|
srl->total_size = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal String8
|
internal String8
|
||||||
str8_serial_end(Arena *arena, String8List *srl){
|
str8_serial_end(Arena *arena, String8List *srl)
|
||||||
|
{
|
||||||
U64 size = srl->total_size;
|
U64 size = srl->total_size;
|
||||||
U8 *out = push_array_no_zero(arena, U8, size);
|
U8 *out = push_array_no_zero(arena, U8, size);
|
||||||
str8_serial_write_to_dst(srl, out);
|
str8_serial_write_to_dst(srl, out);
|
||||||
@@ -2655,19 +2657,20 @@ str8_serial_end(Arena *arena, String8List *srl){
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
str8_serial_write_to_dst(String8List *srl, void *out){
|
str8_serial_write_to_dst(String8List *srl, void *out)
|
||||||
|
{
|
||||||
U8 *ptr = (U8*)out;
|
U8 *ptr = (U8*)out;
|
||||||
for (String8Node *node = srl->first;
|
for EachNode(n, String8Node, srl->first)
|
||||||
node != 0;
|
{
|
||||||
node = node->next){
|
U64 size = n->string.size;
|
||||||
U64 size = node->string.size;
|
MemoryCopy(ptr, n->string.str, size);
|
||||||
MemoryCopy(ptr, node->string.str, size);
|
|
||||||
ptr += size;
|
ptr += size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal U64
|
internal U64
|
||||||
str8_serial_push_align(Arena *arena, String8List *srl, U64 align){
|
str8_serial_push_align(Arena *arena, String8List *srl, U64 align)
|
||||||
|
{
|
||||||
Assert(IsPow2(align));
|
Assert(IsPow2(align));
|
||||||
|
|
||||||
U64 pos = srl->total_size;
|
U64 pos = srl->total_size;
|
||||||
@@ -2679,11 +2682,13 @@ str8_serial_push_align(Arena *arena, String8List *srl, U64 align){
|
|||||||
U8 *buf = push_array(arena, U8, size);
|
U8 *buf = push_array(arena, U8, size);
|
||||||
|
|
||||||
String8 *str = &srl->last->string;
|
String8 *str = &srl->last->string;
|
||||||
if (str->str + str->size == buf){
|
if(str->str + str->size == buf)
|
||||||
|
{
|
||||||
srl->last->string.size += size;
|
srl->last->string.size += size;
|
||||||
srl->total_size += size;
|
srl->total_size += size;
|
||||||
}
|
}
|
||||||
else{
|
else
|
||||||
|
{
|
||||||
str8_list_push(arena, srl, str8(buf, size));
|
str8_list_push(arena, srl, str8(buf, size));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2698,11 +2703,13 @@ str8_serial_push_size(Arena *arena, String8List *srl, U64 size)
|
|||||||
{
|
{
|
||||||
U8 *buf = push_array_no_zero(arena, U8, size);
|
U8 *buf = push_array_no_zero(arena, U8, size);
|
||||||
String8 *str = &srl->last->string;
|
String8 *str = &srl->last->string;
|
||||||
if (str->str + str->size == buf){
|
if(str->str + str->size == buf)
|
||||||
|
{
|
||||||
srl->last->string.size += size;
|
srl->last->string.size += size;
|
||||||
srl->total_size += size;
|
srl->total_size += size;
|
||||||
}
|
}
|
||||||
else{
|
else
|
||||||
|
{
|
||||||
str8_list_push(arena, srl, str8(buf, size));
|
str8_list_push(arena, srl, str8(buf, size));
|
||||||
}
|
}
|
||||||
result = buf;
|
result = buf;
|
||||||
@@ -2711,7 +2718,8 @@ str8_serial_push_size(Arena *arena, String8List *srl, U64 size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal void *
|
internal void *
|
||||||
str8_serial_push_data(Arena *arena, String8List *srl, void *data, U64 size){
|
str8_serial_push_data(Arena *arena, String8List *srl, void *data, U64 size)
|
||||||
|
{
|
||||||
void *result = str8_serial_push_size(arena, srl, size);
|
void *result = str8_serial_push_size(arena, srl, size);
|
||||||
if(result != 0)
|
if(result != 0)
|
||||||
{
|
{
|
||||||
@@ -2721,61 +2729,50 @@ str8_serial_push_data(Arena *arena, String8List *srl, void *data, U64 size){
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
str8_serial_push_data_list(Arena *arena, String8List *srl, String8Node *first){
|
str8_serial_push_data_list(Arena *arena, String8List *srl, String8Node *first)
|
||||||
for (String8Node *node = first;
|
{
|
||||||
node != 0;
|
for EachNode(n, String8Node, first)
|
||||||
node = node->next){
|
{
|
||||||
str8_serial_push_data(arena, srl, node->string.str, node->string.size);
|
str8_serial_push_data(arena, srl, n->string.str, n->string.size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void *
|
||||||
str8_serial_push_u64(Arena *arena, String8List *srl, U64 x){
|
str8_serial_push_u64(Arena *arena, String8List *srl, U64 x)
|
||||||
U8 *buf = push_array_no_zero(arena, U8, 8);
|
{
|
||||||
MemoryCopy(buf, &x, 8);
|
return str8_serial_push_data(arena, srl, &x, sizeof(x));
|
||||||
String8 *str = &srl->last->string;
|
|
||||||
if (str->str + str->size == buf){
|
|
||||||
srl->last->string.size += 8;
|
|
||||||
srl->total_size += 8;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
str8_list_push(arena, srl, str8(buf, 8));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void *
|
||||||
str8_serial_push_u32(Arena *arena, String8List *srl, U32 x){
|
str8_serial_push_u32(Arena *arena, String8List *srl, U32 x)
|
||||||
U8 *buf = push_array_no_zero(arena, U8, 4);
|
{
|
||||||
MemoryCopy(buf, &x, 4);
|
return str8_serial_push_data(arena, srl, &x, sizeof(x));
|
||||||
String8 *str = &srl->last->string;
|
|
||||||
if (str->str + str->size == buf){
|
|
||||||
srl->last->string.size += 4;
|
|
||||||
srl->total_size += 4;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
str8_list_push(arena, srl, str8(buf, 4));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void *
|
||||||
str8_serial_push_u16(Arena *arena, String8List *srl, U16 x){
|
str8_serial_push_u16(Arena *arena, String8List *srl, U16 x)
|
||||||
str8_serial_push_data(arena, srl, &x, sizeof(x));
|
{
|
||||||
|
return str8_serial_push_data(arena, srl, &x, sizeof(x));
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void *
|
||||||
str8_serial_push_u8(Arena *arena, String8List *srl, U8 x){
|
str8_serial_push_u8(Arena *arena, String8List *srl, U8 x)
|
||||||
str8_serial_push_data(arena, srl, &x, sizeof(x));
|
{
|
||||||
|
return str8_serial_push_data(arena, srl, &x, sizeof(x));
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void *
|
||||||
str8_serial_push_cstr(Arena *arena, String8List *srl, String8 str){
|
str8_serial_push_cstr(Arena *arena, String8List *srl, String8 str)
|
||||||
str8_serial_push_data(arena, srl, str.str, str.size);
|
{
|
||||||
|
void *ptr = str8_serial_push_data(arena, srl, str.str, str.size);
|
||||||
str8_serial_push_u8(arena, srl, 0);
|
str8_serial_push_u8(arena, srl, 0);
|
||||||
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void *
|
||||||
str8_serial_push_string(Arena *arena, String8List *srl, String8 str){
|
str8_serial_push_string(Arena *arena, String8List *srl, String8 str)
|
||||||
str8_serial_push_data(arena, srl, str.str, str.size);
|
{
|
||||||
|
return str8_serial_push_data(arena, srl, str.str, str.size);
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
|
|||||||
@@ -428,13 +428,12 @@ internal U64 str8_serial_push_align(Arena *arena, String8List *srl, U64 alig
|
|||||||
internal void * str8_serial_push_size(Arena *arena, String8List *srl, U64 size);
|
internal void * str8_serial_push_size(Arena *arena, String8List *srl, U64 size);
|
||||||
internal void * str8_serial_push_data(Arena *arena, String8List *srl, void *data, U64 size);
|
internal void * str8_serial_push_data(Arena *arena, String8List *srl, void *data, U64 size);
|
||||||
internal void str8_serial_push_data_list(Arena *arena, String8List *srl, String8Node *first);
|
internal void str8_serial_push_data_list(Arena *arena, String8List *srl, String8Node *first);
|
||||||
internal void str8_serial_push_u64(Arena *arena, String8List *srl, U64 x);
|
internal void * str8_serial_push_u64(Arena *arena, String8List *srl, U64 x);
|
||||||
internal void str8_serial_push_u32(Arena *arena, String8List *srl, U32 x);
|
internal void * str8_serial_push_u32(Arena *arena, String8List *srl, U32 x);
|
||||||
internal void str8_serial_push_u16(Arena *arena, String8List *srl, U16 x);
|
internal void * str8_serial_push_u16(Arena *arena, String8List *srl, U16 x);
|
||||||
internal void str8_serial_push_u8(Arena *arena, String8List *srl, U8 x);
|
internal void * str8_serial_push_u8(Arena *arena, String8List *srl, U8 x);
|
||||||
internal void str8_serial_push_cstr(Arena *arena, String8List *srl, String8 str);
|
internal void * str8_serial_push_cstr(Arena *arena, String8List *srl, String8 str);
|
||||||
internal void str8_serial_push_string(Arena *arena, String8List *srl, String8 str);
|
internal void * str8_serial_push_string(Arena *arena, String8List *srl, String8 str);
|
||||||
internal void str8_serial_push_cstr(Arena *arena, String8List *srl, String8 str);
|
|
||||||
#define str8_serial_push_array(arena, srl, ptr, count) str8_serial_push_data(arena, srl, ptr, sizeof(*(ptr)) * (count))
|
#define str8_serial_push_array(arena, srl, ptr, count) str8_serial_push_data(arena, srl, ptr, sizeof(*(ptr)) * (count))
|
||||||
#define str8_serial_push_struct(arena, srl, ptr) str8_serial_push_array(arena, srl, ptr, 1)
|
#define str8_serial_push_struct(arena, srl, ptr) str8_serial_push_array(arena, srl, ptr, 1)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user