lib/accy/src/tensor/hook.zig
daab053ee43316e1809a84551d573ddd1e5bf3d2
1 pub fn attach(comptime name: []const u8, hooks: anytype, next: anytype) if (has(@TypeOf(hooks), name)) @TypeOf(@field(hooks, name).attach(next)) else @TypeOf(next) {
2 if (comptime has(@TypeOf(hooks), name)) return @field(hooks, name).attach(next);
3 return next;
4 }
5
6 pub fn has(comptime Hooks: type, comptime name: []const u8) bool {
7 return switch (@typeInfo(Hooks)) {
8 .@"struct" => @hasField(Hooks, name),
9 else => false,
10 };
11 }