Compiler arena_alloc_array utility procedure

This commit is contained in:
gingerBill
2026-03-30 13:15:41 +01:00
parent 52701390ce
commit 69606e4e22

View File

@@ -501,6 +501,10 @@ gb_internal Arena *get_arena(ThreadArenaKind kind) {
return nullptr;
}
template <typename T>
gb_internal T *arena_alloc_array(Arena *arena, isize count) {
return cast(T *)arena_alloc(arena, gb_size_of(T)*count, gb_align_of(T));
}
template <typename T>
gb_internal T *permanent_alloc_item() {
@@ -511,13 +515,13 @@ gb_internal T *permanent_alloc_item() {
template <typename T>
gb_internal T *permanent_alloc_array(isize count) {
Arena *arena = get_arena(ThreadArena_Permanent);
return cast(T *)arena_alloc(arena, gb_size_of(T)*count, gb_align_of(T));
return arena_alloc_array<T>(arena, count);
}
template <typename T>
gb_internal Slice<T> permanent_slice_make(isize count) {
Arena *arena = get_arena(ThreadArena_Permanent);
T *data = cast(T *)arena_alloc(arena, gb_size_of(T)*count, gb_align_of(T));
T *data = arena_alloc_array<T>(arena, count);
return {data, count};
}
@@ -530,13 +534,13 @@ gb_internal T *temporary_alloc_item() {
template <typename T>
gb_internal T *temporary_alloc_array(isize count) {
Arena *arena = get_arena(ThreadArena_Temporary);
return cast(T *)arena_alloc(arena, gb_size_of(T)*count, gb_align_of(T));
return arena_alloc_array<T>(arena, count);
}
template <typename T>
gb_internal Slice<T> temporary_slice_make(isize count) {
Arena *arena = get_arena(ThreadArena_Temporary);
T *data = cast(T *)arena_alloc(arena, gb_size_of(T)*count, gb_align_of(T));
T *data = arena_alloc_array<T>(arena, count);
return {data, count};
}