feat(core): WIP deinit arena allocator

This commit is contained in:
2025-05-06 16:22:57 +02:00
parent c23ee52f05
commit 7349abae79

32
src/core/allocator.zig Normal file
View File

@@ -0,0 +1,32 @@
const std = @import("std");
const Allocator = std.mem.Allocator;
pub const Callback = struct {
context: *anyopaque,
invokeFn: *const fn (ctx: *anyopaque) void,
pub fn call(self: *const @This()) void {
self.invokeFn(self.context);
}
pub fn create(obj: anytype) Callback {
return Callback {
.context = @ptrCast(@alignCast(obj)),
.invokeFn = @TypeOf(obj.*).deinit,
};
}
};
pub const DeinitArena = struct {
arena: std.heap.ArenaAllocator,
deiniters: std.ArrayList(Callback),
pub fn deinit(self: *DeinitArena) void {
for (self.deiniters.items) |deiniter| {
deiniter.deinit(deiniter.context);
}
self.arena.deinit();
}
};