raddbgi cons: more overrides work

This commit is contained in:
Ryan Fleury
2024-02-12 19:10:31 -08:00
parent 7022c58018
commit 2a85e1d37d
3 changed files with 73 additions and 23 deletions
+30 -8
View File
@@ -12,7 +12,7 @@
//- rjf: memory set
#if !defined(raddbgic_memset)
#if !defined(RADDBGIC_MEMSET_OVERRIDE)
RADDBGI_PROC void *
raddbgic_memset_fallback(void *dst, RADDBGI_U8 c, RADDBGI_U64 size)
{
@@ -37,19 +37,41 @@ raddbgic_str8(RADDBGI_U8 *str, RADDBGI_U64 size)
//- rjf: arenas
RADDBGI_PROC void *
raddbgic_arena_push(RADDBGIC_Arena *arena, RADDBGI_U64 size)
#if !defined (RADDBGIC_ARENA_OVERRIDE)
RADDBGI_PROC RADDBGIC_Arena *
raddbgic_arena_alloc_fallback(void)
{
void *result = RADDBGIC_Arena_PushImpl((arena), (size));
return result;
RADDBGIC_Arena *arena = 0;
return arena;
}
RADDBGI_PROC void
raddbgic_arena_pop_to(RADDBGIC_Arena *arena, RADDBGI_U64 pos)
raddbgic_arena_release_fallback(RADDBGIC_Arena *arena)
{
RADDBGIC_Arena_PopToImpl((arena), (pos));
}
RADDBGI_PROC RADDBGI_U64
raddbgic_arena_pos_fallback(RADDBGIC_Arena *arena)
{
return 0;
}
RADDBGI_PROC void *
raddbgic_arena_push_fallback(RADDBGIC_Arena *arena, RADDBGI_U64 size)
{
return 0;
}
RADDBGI_PROC void
raddbgic_arena_pop_to_fallback(RADDBGIC_Arena *arena, RADDBGI_U64 pos)
{
}
#endif
//- rjf: type lists
RADDBGI_PROC void
@@ -194,7 +216,7 @@ raddbgic_sort_key_array(RADDBGIC_Arena *arena, RADDBGIC_SortKey *keys, RADDBGI_U
}
else
{
RADDBGIC_SortKey *keys_swap = push_array_no_zero(arena, RADDBGIC_SortKey, count);
RADDBGIC_SortKey *keys_swap = raddbgic_push_array_no_zero(arena, RADDBGIC_SortKey, count);
RADDBGIC_SortKey *src = keys;
RADDBGIC_SortKey *dst = keys_swap;
RADDBGIC_OrderedRange *src_ranges = ranges_first;
+35 -10
View File
@@ -7,10 +7,15 @@
////////////////////////////////
//~ rjf: Overrideable Memory Operations
// To override the slow/default memset implementation used by the library,
// do the following:
//
// #define RADDBGIC_MEMSET_OVERRIDE
// #define raddbgic_memset <name of memset implementation>
#if !defined(raddbgic_memset)
# define raddbgic_memset raddbgic_memset_fallback
#endif
#define raddbgic_memzero(ptr, size) raddbgic_memset((ptr), 0, (size))
////////////////////////////////
//~ rjf: Overrideable String View Types
@@ -57,12 +62,13 @@ struct RADDBGIC_String8List
// To override the arena allocator type used by the library, do the following:
//
// #define RADDBGIC_ARENA_OVERRIDE
// #define RADDBGIC_Arena <name of your arena type here>
// #define RADDBGIC_Arena_AllocImpl <name of your creation function - must be (void) -> Arena*>
// #define RADDBGIC_Arena_ReleaseImpl <name of your release function - must be (Arena*) -> void>
// #define RADDBGIC_Arena_PosImpl <name of your position function - must be (Arena*) -> U64>
// #define RADDBGIC_Arena_PushImpl <name of your pushing function - must be (Arena*, U64 size) -> void*>
// #define RADDBGIC_Arena_PopToImpl <name of your popping function - must be (Arena*, U64 pos) -> void>
// #define raddbgic_arena_alloc <name of your creation function - must be (void) -> Arena*>
// #define raddbgic_arena_release <name of your release function - must be (Arena*) -> void>
// #define raddbgic_arena_pos <name of your position function - must be (Arena*) -> U64>
// #define raddbgic_arena_push <name of your pushing function - must be (Arena*, U64 size) -> void*>
// #define raddbgic_arena_pop_to <name of your popping function - must be (Arena*, U64 pos) -> void>
#if !defined(RADDBGIC_Arena)
typedef struct RADDBGIC_Arena RADDBGIC_Arena;
@@ -79,6 +85,19 @@ struct RADDBGIC_Arena
};
#endif
#if !defined(raddbgic_arena_alloc)
# define raddbgic_arena_alloc raddbgic_arena_alloc_fallback
#endif
#if !defined(raddbgic_arena_release)
# define raddbgic_arena_release raddbgic_arena_release_fallback
#endif
#if !defined(raddbgic_arena_pos)
# define raddbgic_arena_pos raddbgic_arena_pos_fallback
#endif
#if !defined(raddbgic_arena_push)
# define raddbgic_arena_push raddbgic_arena_push_fallback
#endif
typedef struct RADDBGIC_Temp RADDBGIC_Temp;
struct RADDBGIC_Temp
{
@@ -902,18 +921,24 @@ struct RADDBGIC_BakeCtx
////////////////////////////////
//~ rjf: Basic Helpers
//- rjf: memory set
#if !defined(raddbgic_memset)
//- rjf: memory operations
#if !defined(RADDBGIC_MEMSET_OVERRIDE)
RADDBGI_PROC void *raddbgic_memset_fallback(void *dst, RADDBGI_U8 c, RADDBGI_U64 size);
#endif
#define raddbgic_memzero(ptr, size) raddbgic_memset((ptr), 0, (size))
//- rjf: strings
RADDBGI_PROC RADDBGIC_String8 raddbgic_str8(RADDBGI_U8 *str, RADDBGI_U64 size);
#define raddbgic_str8_lit(S) raddbgic_str8((U8*)(S), sizeof(S) - 1)
//- rjf: arenas
RADDBGI_PROC void *raddbgic_arena_push(RADDBGIC_Arena *arena, RADDBGI_U64 size);
RADDBGI_PROC void raddbgic_arena_pop_to(RADDBGIC_Arena *arena, RADDBGI_U64 pos);
#if !defined (RADDBGIC_ARENA_OVERRIDE)
RADDBGI_PROC RADDBGIC_Arena *raddbgic_arena_alloc_fallback(void);
RADDBGI_PROC void raddbgic_arena_release_fallback(RADDBGIC_Arena *arena);
RADDBGI_PROC RADDBGI_U64 raddbgic_arena_pos_fallback(RADDBGIC_Arena *arena);
RADDBGI_PROC void *raddbgic_arena_push_fallback(RADDBGIC_Arena *arena, RADDBGI_U64 size);
RADDBGI_PROC void raddbgic_arena_pop_to_fallback(RADDBGIC_Arena *arena, RADDBGI_U64 pos);
#endif
#define raddbgic_push_array_no_zero(a,T,c) (T*)raddbgic_arena_push((a), sizeof(T)*(c))
#define raddbgic_push_array(a,T,c) (T*)raddbgic_memzero(raddbgic_push_array_no_zero(a,T,c), sizeof(T)*(c))
+8 -5
View File
@@ -5,9 +5,11 @@
#define RADDBGI_CONS_LOCAL_H
// rjf: base layer memory ops
#define RADDBGIC_MEMSET_OVERRIDE
#define raddbgic_memset memset
// rjf: base layer string overrides
#define RADDBGI_STRING8_OVERRIDE
#define RADDBGIC_String8 String8
#define RADDBGIC_String8_BaseMember str
#define RADDBGIC_String8_SizeMember size
@@ -15,12 +17,13 @@
#define RADDBGIC_String8List String8List
// rjf: base layer arena overrides
#define RADDBGIC_ARENA_OVERRIDE
#define RADDBGIC_Arena Arena
#define RADDBGIC_Arena_AllocImpl arena_alloc
#define RADDBGIC_Arena_ReleaseImpl arena_release
#define RADDBGIC_Arena_PosImpl arena_pos
#define RADDBGIC_Arena_PushImpl arena_push
#define RADDBGIC_Arena_PopToImpl arena_pop_to
#define raddbgic_arena_alloc arena_alloc
#define raddbgic_arena_release arena_release
#define raddbgic_arena_pos arena_pos
#define raddbgic_arena_push arena_push
#define raddbgic_arena_pop_to arena_pop_to
#include "raddbgi_cons.h"