diff --git a/src/component_manager.zig b/src/component_manager.zig index b1e3881..63b16aa 100644 --- a/src/component_manager.zig +++ b/src/component_manager.zig @@ -23,6 +23,7 @@ pub const ComponentManager = struct { pub fn deinit(self: *Self) void { var iter = self.component_stores.map.iterator(); while (iter.next()) |ptr| { + // HACK: we dont know the Type here but we need to call deinit var storage = @intToPtr(*ComponentStore(u1), ptr.value); storage.deinit(); self.allocator.destroy(storage); @@ -87,12 +88,8 @@ test "read components" { .number = 14 }; - var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); - defer arena.deinit(); - - const allocator = &arena.allocator; - - var component_manager = ComponentManager.init(allocator); + var component_manager = ComponentManager.init(std.testing.allocator); + defer component_manager.deinit(); component_manager.register(TestComponent); @@ -120,12 +117,8 @@ test "read entities" { .number = 14 }; - var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); - defer arena.deinit(); - - const allocator = &arena.allocator; - - var component_manager = ComponentManager.init(allocator); + var component_manager = ComponentManager.init(std.testing.allocator); + defer component_manager.deinit(); component_manager.register(TestComponent); diff --git a/src/component_store.zig b/src/component_store.zig index 72172b3..e26ac11 100644 --- a/src/component_store.zig +++ b/src/component_store.zig @@ -133,12 +133,9 @@ test "iterate items" { .number = 15 }; - var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); - defer arena.deinit(); + var component_store = ComponentStore(TestComponent).init(std.testing.allocator); + defer component_store.deinit(); - const allocator = &arena.allocator; - - var component_store = ComponentStore(TestComponent).init(allocator); component_store.set(3, component); component_store.set(5, componentTwo); component_store.set(8, componentThree); @@ -155,12 +152,9 @@ test "has item" { .number = 3 }; - var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); - defer arena.deinit(); + var component_store = ComponentStore(TestComponent).init(std.testing.allocator); + defer component_store.deinit(); - const allocator = &arena.allocator; - - var component_store = ComponentStore(TestComponent).init(allocator); component_store.set(5, component); testing.expect(component_store.has(5)); @@ -180,12 +174,9 @@ test "remove item" { .number = 124 }; - var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); - defer arena.deinit(); + var component_store = ComponentStore(TestComponent).init(std.testing.allocator); + defer component_store.deinit(); - const allocator = &arena.allocator; - - var component_store = ComponentStore(TestComponent).init(allocator); component_store.set(5, component); component_store.set(10, componentTwo); component_store.set(15, componentThree); diff --git a/src/entity_manager.zig b/src/entity_manager.zig index dade305..adadf78 100644 --- a/src/entity_manager.zig +++ b/src/entity_manager.zig @@ -21,6 +21,11 @@ pub const EntityManager = struct { }; } + pub fn deinit(self: *Self) void { + self.idManager.deinit(); + self.ids.deinit(); + } + pub fn create(self: *Self) !Entity { const id = self.idManager.next(); var entity = Entity { .ID = id }; @@ -34,12 +39,8 @@ pub const EntityManager = struct { }; test "create" { - var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); - defer arena.deinit(); - - const allocator = &arena.allocator; - - var entity_manager = EntityManager.init(allocator); + var entity_manager = EntityManager.init(std.testing.allocator); + defer entity_manager.deinit(); var entity = try entity_manager.create(); @@ -47,12 +48,8 @@ test "create" { } test "exists" { - var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); - defer arena.deinit(); - - const allocator = &arena.allocator; - - var entity_manager = EntityManager.init(allocator); + var entity_manager = EntityManager.init(std.testing.allocator); + defer entity_manager.deinit(); var entity = try entity_manager.create(); diff --git a/src/id_manager.zig b/src/id_manager.zig index 0c7c160..dc4947e 100644 --- a/src/id_manager.zig +++ b/src/id_manager.zig @@ -17,6 +17,10 @@ pub const IDManager = struct { }; } + pub fn deinit(self: *Self) void { + self.availableIDs.deinit(); + } + pub fn next(self: *Self) usize { if (self.availableIDs.items.len > 0) { @@ -36,24 +40,16 @@ pub const IDManager = struct { }; test "next" { - var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); - defer arena.deinit(); - - const allocator = &arena.allocator; - - var id_manager = IDManager.init(allocator); + var id_manager = IDManager.init(std.testing.allocator); + defer id_manager.deinit(); testing.expect(id_manager.next() == 0); testing.expect(id_manager.next() == 1); } test "free" { - var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); - defer arena.deinit(); - - const allocator = &arena.allocator; - - var id_manager = IDManager.init(allocator); + var id_manager = IDManager.init(std.testing.allocator); + defer id_manager.deinit(); var id_zero = id_manager.next(); var id_one = id_manager.next();