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 }