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.

FileHeader

Fetch.FileHeader
const FileHeader = struct

File

lib/compiler/Maker/Fetch.zig:2052

Code

const FileHeader = struct {
    header: [4]u8 = undefined,
    bytes_read: usize = 0,

    pub fn update(self: *FileHeader, buf: []const u8) void {
        if (self.bytes_read >= self.header.len) return;
        const n = @min(self.header.len - self.bytes_read, buf.len);
        @memcpy(self.header[self.bytes_read..][0..n], buf[0..n]);
        self.bytes_read += n;
    }

    fn isScript(self: *FileHeader) bool {
        const shebang = "#!";
        return std.mem.eql(u8, self.header[0..@min(self.bytes_read, shebang.len)], shebang);
    }

    fn isElf(self: *FileHeader) bool {
        const elf_magic = std.elf.MAGIC;
        return std.mem.eql(u8, self.header[0..@min(self.bytes_read, elf_magic.len)], elf_magic);
    }

    fn isMachO(self: *FileHeader) bool {
        if (self.bytes_read < 4) return false;
        const magic_number = std.mem.readInt(u32, &self.header, builtin.cpu.arch.endian());
        return magic_number == std.macho.MH_MAGIC or
            magic_number == std.macho.MH_MAGIC_64 or
            magic_number == std.macho.FAT_MAGIC or
            magic_number == std.macho.FAT_MAGIC_64 or
            magic_number == std.macho.MH_CIGAM or
            magic_number == std.macho.MH_CIGAM_64 or
            magic_number == std.macho.FAT_CIGAM or
            magic_number == std.macho.FAT_CIGAM_64;
    }

    pub fn isExecutable(self: *FileHeader) bool {
        return self.isScript() or self.isElf() or self.isMachO();
    }
}