mirror of
https://github.com/Ed94/metadesk.git
synced 2026-08-07 08:08:48 +00:00
collapsed arena -> allocatorinfo : math.h
This commit is contained in:
+17
-31
@@ -969,40 +969,26 @@ u32_from_rgba(Vec4F32 rgba)
|
|||||||
|
|
||||||
void rng1s64_list_push (Arena* arena, Rng1S64List* list, Rng1S64 rng);
|
void rng1s64_list_push (Arena* arena, Rng1S64List* list, Rng1S64 rng);
|
||||||
void rng1s64_list_alloc (AllocatorInfo ainfo, Rng1S64List* list, Rng1S64 rng);
|
void rng1s64_list_alloc (AllocatorInfo ainfo, Rng1S64List* list, Rng1S64 rng);
|
||||||
Rng1S64Array rng1s64_array_from_list (Arena* arena, Rng1S64List* list);
|
Rng1S64Array rng1s64_array_from_list_push (Arena* arena, Rng1S64List* list);
|
||||||
Rng1S64Array rng1s64_array_from_list_alloc(AllocatorInfo ainfo, Rng1S64List* list);
|
Rng1S64Array rng1s64_array_from_list_alloc(AllocatorInfo ainfo, Rng1S64List* list);
|
||||||
|
|
||||||
inline void
|
#define rng1s64_array_from_list(allocator, list, rng) \
|
||||||
rng1s64_list_push(Arena* arena, Rng1S64List* list, Rng1S64 rng)
|
_Generic(allocator, \
|
||||||
{
|
Arena*: rng1s64_list_push, \
|
||||||
#if MD_DONT_MAP_ANREA_TO_ALLOCATOR_IMPL
|
AllocatorInfo: rng1s64_list_alloc, \
|
||||||
Rng1S64Node* n = push_array(arena, Rng1S64Node, 1);
|
default: METADESK_NO_RESOLVED_GENERIC_SELECTION \
|
||||||
memory_copy_struct(&n->v, &rng);
|
) MD_RESOLVED_FUNCTION_CALL(allocator, list, rng)
|
||||||
sll_queue_push(list->first, list->last, n);
|
|
||||||
list->count += 1;
|
|
||||||
#else
|
|
||||||
rng1s64_list_alloc(arena_allocator(arena), list, rng);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
inline Rng1S64Array
|
#define rng1s64_array_from_list(allocator, list) \
|
||||||
rng1s64_array_from_list(Arena* arena, Rng1S64List* list)
|
_Generic(allocator, \
|
||||||
{
|
Arena*: rng1s64_array_from_list_push, \
|
||||||
#if MD_DONT_MAP_ANREA_TO_ALLOCATOR_IMPL
|
AllocatorInfo: rng1s64_array_from_list_alloc, \
|
||||||
Rng1S64Array
|
default: METADESK_NO_RESOLVED_GENERIC_SELECTION \
|
||||||
arr = {0};
|
) MD_RESOLVED_FUNCTION_CALL(allocator, list)
|
||||||
arr.count = list->count;
|
|
||||||
arr.v = push_array_no_zero(arena, Rng1S64, arr.count);
|
|
||||||
U64 idx = 0;
|
force_inline void rng1s64_list_push (Arena* arena, Rng1S64List* list, Rng1S64 rng) { rng1s64_list_alloc (arena_allocator(arena), list, rng); }
|
||||||
for (Rng1S64Node *n = list->first; n != 0; n = n->next) {
|
force_inline Rng1S64Array rng1s64_array_from_list_push(Arena* arena, Rng1S64List* list) { return rng1s64_array_from_list_alloc(arena_allocator(arena), list); }
|
||||||
arr.v[idx] = n->v;
|
|
||||||
idx += 1;
|
|
||||||
}
|
|
||||||
return arr;
|
|
||||||
#else
|
|
||||||
return rng1s64_array_from_list_alloc(arena_allocator(arena), list);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
rng1s64_list_alloc(AllocatorInfo ainfo, Rng1S64List* list, Rng1S64 rng) {
|
rng1s64_list_alloc(AllocatorInfo ainfo, Rng1S64List* list, Rng1S64 rng) {
|
||||||
|
|||||||
Reference in New Issue
Block a user