From 9becd7d56bfaf6792d09182d956392142786423d Mon Sep 17 00:00:00 2001 From: Rokas Puzonas Date: Sun, 22 Mar 2026 12:01:20 +0200 Subject: [PATCH] rename generational_array_list to slot_map --- engine/src/engine/audio.zig | 2 +- engine/src/engine/graphics.zig | 4 ++-- engine/src/game_lib/root.zig | 2 +- ...nerational_array_list.zig => slot_map.zig} | 22 +++++++++---------- 4 files changed, 15 insertions(+), 15 deletions(-) rename engine/src/game_lib/{generational_array_list.zig => slot_map.zig} (97%) diff --git a/engine/src/engine/audio.zig b/engine/src/engine/audio.zig index c5c8657..1a7dff3 100644 --- a/engine/src/engine/audio.zig +++ b/engine/src/engine/audio.zig @@ -255,7 +255,7 @@ const SokolSetupOptions = struct { buffer_frames: u32 }; -const SoundList = Lib.GenerationalArrayList(u8, u8, Sound); +const SoundList = Lib.SlotMap(u8, u8, Sound); comptime { assert(@bitSizeOf(SoundList.Id) == @bitSizeOf(Lib.Sound.Id)); } diff --git a/engine/src/engine/graphics.zig b/engine/src/engine/graphics.zig index b3ea0b6..b0f9135 100644 --- a/engine/src/engine/graphics.zig +++ b/engine/src/engine/graphics.zig @@ -77,13 +77,13 @@ const Font = struct { } }; -const FontArray = Lib.GenerationalArrayList(u8, u8, Font); +const FontArray = Lib.SlotMap(u8, u8, Font); comptime { assert(@bitSizeOf(FontArray.Id) == @bitSizeOf(Lib.Font.Id)); assert(FontArray.Id.none.asInt() == @intFromEnum(Lib.Font.Id.nil)); } -const TexturesArray = Lib.GenerationalArrayList(u8, u8, Texture); +const TexturesArray = Lib.SlotMap(u8, u8, Texture); comptime { // TODO: This is PITA, can this be refactored? assert(@bitSizeOf(TexturesArray.Id) == @bitSizeOf(Lib.Texture.Id)); diff --git a/engine/src/game_lib/root.zig b/engine/src/game_lib/root.zig index f54a2ff..5967873 100644 --- a/engine/src/game_lib/root.zig +++ b/engine/src/game_lib/root.zig @@ -4,7 +4,7 @@ const log = std.log.scoped(.engine); pub const build_options = @import("build_options"); pub const ImGui = @import("./imgui.zig"); pub const Math = @import("./math.zig"); -pub const GenerationalArrayList = @import("./generational_array_list.zig").GenerationalArrayList; +pub const SlotMap = @import("./slot_map.zig").SlotMap; const STBImage = @import("stb_image"); const rgb = Math.rgb; diff --git a/engine/src/game_lib/generational_array_list.zig b/engine/src/game_lib/slot_map.zig similarity index 97% rename from engine/src/game_lib/generational_array_list.zig rename to engine/src/game_lib/slot_map.zig index 964f581..3d2f861 100644 --- a/engine/src/game_lib/generational_array_list.zig +++ b/engine/src/game_lib/slot_map.zig @@ -9,7 +9,7 @@ const Allocator = std.mem.Allocator; /// - Unique IDs for every inserted item (assuming that generation doesn't overflow) /// TODO: Use a stack of unused indexes to implement O(1) insertion /// TODO: Implement a way to use a list *assumeCapacity() style of functions. -pub fn GenerationalArrayList( +pub fn SlotMap( Index: type, Generation: type, Item: type @@ -368,13 +368,13 @@ pub fn GenerationalArrayList( }; } -const TestArray = GenerationalArrayList(u24, u8, u32); +const TestMap = SlotMap(u24, u8, u32); test "insert & remove" { const expect = std.testing.expect; const gpa = std.testing.allocator; - var array_list: TestArray = .empty; + var array_list: TestMap = .empty; defer array_list.deinit(gpa); const id1 = try array_list.insert(gpa, 10); @@ -393,7 +393,7 @@ test "generation wrap around" { const expectEqual = std.testing.expectEqual; const gpa = std.testing.allocator; - var array_list: TestArray = .empty; + var array_list: TestMap = .empty; defer array_list.deinit(gpa); // Grow array list so that at least 1 slot exists @@ -401,7 +401,7 @@ test "generation wrap around" { array_list.removeAssumeExists(id1); // Artificially increase generation count - array_list.generations[id1.index] = std.math.maxInt(@FieldType(TestArray.Id, "generation")); + array_list.generations[id1.index] = std.math.maxInt(@FieldType(TestMap.Id, "generation")); // Check if generation wraps around const id2 = try array_list.insert(gpa, 10); @@ -414,7 +414,7 @@ test "iterator" { const expectEqual = std.testing.expectEqual; const gpa = std.testing.allocator; - var array_list: TestArray = .empty; + var array_list: TestMap = .empty; defer array_list.deinit(gpa); // Create array which has a hole @@ -426,14 +426,14 @@ test "iterator" { var iter = array_list.iterator(); try expectEqual( - TestArray.ItemWithId{ + TestMap.ItemWithId{ .id = id1, .item = array_list.getAssumeExists(id1) }, iter.next().? ); try expectEqual( - TestArray.ItemWithId{ + TestMap.ItemWithId{ .id = id3, .item = array_list.getAssumeExists(id3) }, @@ -446,10 +446,10 @@ test "read & write" { const expectEqual = std.testing.expectEqual; const gpa = std.testing.allocator; - var array_list1: TestArray = .empty; + var array_list1: TestMap = .empty; defer array_list1.deinit(gpa); - var array_list2: TestArray = .empty; + var array_list2: TestMap = .empty; defer array_list2.deinit(gpa); const id1 = try array_list1.insert(gpa, 1); @@ -475,7 +475,7 @@ test "clear retaining capacity" { const expectEqual = std.testing.expectEqual; const gpa = std.testing.allocator; - var array_list: TestArray = .empty; + var array_list: TestMap = .empty; defer array_list.deinit(gpa); const id1 = try array_list.insert(gpa, 10);