From 9150224734218cba2dee213982fa8caa8be7387c Mon Sep 17 00:00:00 2001 From: David Allemang Date: Thu, 21 Nov 2024 19:44:42 -0500 Subject: [PATCH] Remove hooks --- src/nu.zig | 3 -- src/nu/ImGui.zig | 1 - src/nu/hooks.zig | 82 ------------------------------------------------ 3 files changed, 86 deletions(-) delete mode 100644 src/nu/hooks.zig diff --git a/src/nu.zig b/src/nu.zig index 8e60c18..2786121 100644 --- a/src/nu.zig +++ b/src/nu.zig @@ -1,13 +1,11 @@ const std = @import("std"); const root = @import("root"); -const hooks = @import("nu/hooks.zig"); pub const Window = @import("nu/Window.zig"); pub const Render = @import("nu/Render.zig"); pub const ImGui = @import("nu/ImGui.zig"); pub const Bus = @import("nu/Bus.zig"); -pub const Hook = hooks.Hook; const Config = struct { window: Window.Config = .{}, @@ -112,5 +110,4 @@ const Graph = struct { }; test { - std.testing.refAllDecls(hooks); } \ No newline at end of file diff --git a/src/nu/ImGui.zig b/src/nu/ImGui.zig index a7d5f72..b891211 100644 --- a/src/nu/ImGui.zig +++ b/src/nu/ImGui.zig @@ -6,7 +6,6 @@ const vk = @import("vk"); const nu = @import("../nu.zig"); const au = @import("Render/au.zig"); -const Hook = @import("hooks.zig").Hook; const Render = @import("Render.zig"); const Window = @import("Window.zig"); diff --git a/src/nu/hooks.zig b/src/nu/hooks.zig deleted file mode 100644 index 1039d1e..0000000 --- a/src/nu/hooks.zig +++ /dev/null @@ -1,82 +0,0 @@ -const std = @import("std"); - -pub fn Hook(ftype: type) type { - const F: std.builtin.Type.Fn = @typeInfo(ftype).Fn; - const R: std.builtin.Type = @typeInfo(F.return_type.?); - comptime if (R != .Void) @compileError("Hook signature must return void."); - - return struct { - const Self = @This(); - - handlers: std.AutoArrayHashMap(*const ftype, void), - - pub fn init(alloc: std.mem.Allocator) Self { - return Self{ - .handlers = std.AutoArrayHashMap(*const ftype, void).init(alloc), - }; - } - - pub fn deinit(self: *Self) void { - self.handlers.deinit(); - } - - pub fn register(self: *Self, f: ftype) !void { - try self.handlers.putNoClobber(f, {}); - } - - pub fn unregister(self: *Self, f: ftype) void { - _ = self.handlers.orderedRemove(f); - } - - pub fn invoke(self: Self, args: anytype) void { - for (self.handlers.keys()) |handler| { - @call(.auto, handler, args); - } - } - }; -} - -test "void hooks" { - var set_flags = Hook(fn (*usize) void).init(std.testing.allocator); - defer set_flags.deinit(); - - const hooks = struct { - pub fn set_one(f: *usize) void { - f.* |= 0b01; - } - - pub fn set_two(f: *usize) void { - f.* |= 0b10; - } - }; - - var flag: usize = undefined; - - flag = 0; - set_flags.invoke(.{&flag}); - try std.testing.expect(flag == 0b00); - - try set_flags.register(hooks.set_one); - - flag = 0; - set_flags.invoke(.{&flag}); - try std.testing.expect(flag == 0b01); - - try set_flags.register(hooks.set_two); - - flag = 0; - set_flags.invoke(.{&flag}); - try std.testing.expect(flag == 0b11); - - set_flags.unregister(hooks.set_one); - - flag = 0; - set_flags.invoke(.{&flag}); - try std.testing.expect(flag == 0b10); - - set_flags.unregister(hooks.set_two); - - flag = 0; - set_flags.invoke(.{&flag}); - try std.testing.expect(flag == 0b00); -}