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 }