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.
Zig › compiler/ › Maker/ › Fetch.zig › FileHeader
FileHeader
Fetch.FileHeader
const FileHeader = struct
File
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 ();
}
}