Zig 0.17.0-dev (Split by item)

This is an example of documentation generated by ZigDoc, an alternative to Zig's built-in Auto Doc feature. See also examples in other modes/formats. The project being documented here (as the example) is the Zig library itself.

sourceIndexMessage

fuzz.sourceIndexMessage
pub fn sourceIndexMessage(msg_bytes: []u8) error

File

lib/build-web/fuzz.zig:15

Code

pub fn sourceIndexMessage(msg_bytes: []u8) error{OutOfMemory}!void {
    Walk.files.clearRetainingCapacity();
    Walk.decls.clearRetainingCapacity();
    Walk.modules.clearRetainingCapacity();
    recent_coverage_update.clearRetainingCapacity();
    selected_source_location = null;

    js.requestSources();

    const Header = abi.fuzz.SourceIndexHeader;
    const header: *align(1) const Header = @ptrCast(msg_bytes[0..@sizeOf(Header)]);

    const directories_start = @sizeOf(Header);
    const directories_end = directories_start + header.directories_len * @sizeOf(Coverage.String);
    const files_start = directories_end;
    const files_end = files_start + header.files_len * @sizeOf(Coverage.File);
    const source_locations_start = files_end;
    const source_locations_end = source_locations_start + header.source_locations_len * @sizeOf(Coverage.SourceLocation);
    const string_bytes = msg_bytes[source_locations_end..][0..header.string_bytes_len];

    const directories: []const Coverage.String = @alignCast(std.mem.bytesAsSlice(Coverage.String, msg_bytes[directories_start..directories_end]));
    const files: []const Coverage.File = @alignCast(std.mem.bytesAsSlice(Coverage.File, msg_bytes[files_start..files_end]));
    const source_locations: []const Coverage.SourceLocation = @alignCast(std.mem.bytesAsSlice(Coverage.SourceLocation, msg_bytes[source_locations_start..source_locations_end]));

    start_fuzzing_timestamp = header.start_timestamp;
    start_fuzzing_n_runs = header.start_n_runs;
    try updateCoverageSources(directories, files, source_locations, string_bytes);
    js.ready();
}