lib/accy/src/kernel/library/catalog/family/sparse/candidate.zig
daab053ee43316e1809a84551d573ddd1e5bf3d2
1 const std = @import("std");
2
3 const descriptor_mod = @import("../../root.zig");
4 const geometry = @import("../../../root.zig").geometry;
5
6 const OwnedDescriptor = descriptor_mod.OwnedDescriptor;
7
8 pub const SparseCandidateDescriptors = struct {
9 count: usize = 0,
10 items: [geometry.max_thread_candidates]OwnedDescriptor = undefined,
11
12 pub fn slice(self: *const SparseCandidateDescriptors) []const OwnedDescriptor {
13 return self.items[0..self.count];
14 }
15
16 pub fn deinit(self: *SparseCandidateDescriptors) void {
17 for (self.items[0..self.count]) |*descriptor| descriptor.deinit();
18 self.* = undefined;
19 }
20 };
21
22 pub fn sparseCandidateTargetsContain(candidates: []const OwnedDescriptor, target: []const u8) bool {
23 for (candidates) |candidate| {
24 if (std.mem.eql(u8, candidate.descriptor.metadata.target, target)) return true;
25 }
26 return false;
27 }