|
const std = @import("std.zig"); const tokenizer = @import("zig/tokenizer.zig"); const fmt = @import("zig/fmt.zig"); const assert = std.debug.assert; |
ErrorBundlezig/ErrorBundle.zigReturns the standard file system basename of a binary generated by the Zig compiler. |
pub const ErrorBundle = @import("zig/ErrorBundle.zig"); |
Serverzig/Server.zig |
pub const Server = @import("zig/Server.zig"); |
Clientzig/Client.zig |
pub const Client = @import("zig/Client.zig"); |
Token |
pub const Token = tokenizer.Token; |
Tokenizer |
pub const Tokenizer = tokenizer.Tokenizer; |
fmtId |
pub const fmtId = fmt.fmtId; |
fmtEscapes |
pub const fmtEscapes = fmt.fmtEscapes; |
isValidId |
pub const isValidId = fmt.isValidId; |
string_literalzig/string_literal.zig |
pub const string_literal = @import("zig/string_literal.zig"); |
number_literalzig/number_literal.zig |
pub const number_literal = @import("zig/number_literal.zig"); |
primitiveszig/primitives.zig |
pub const primitives = @import("zig/primitives.zig"); |
Astzig/Ast.zig |
pub const Ast = @import("zig/Ast.zig"); |
systemzig/system.zig |
pub const system = @import("zig/system.zig"); |
CrossTargetzig/CrossTarget.zig |
pub const CrossTarget = @import("zig/CrossTarget.zig"); |
ParsedCharLiteral |
// Character literal parsing pub const ParsedCharLiteral = string_literal.ParsedCharLiteral; |
parseCharLiteral |
pub const parseCharLiteral = string_literal.parseCharLiteral; |
parseNumberLiteral |
pub const parseNumberLiteral = number_literal.parseNumberLiteral; |
c_builtinszig/c_builtins.zig |
// Files needed by translate-c. pub const c_builtins = @import("zig/c_builtins.zig"); |
c_translationzig/c_translation.zig |
pub const c_translation = @import("zig/c_translation.zig"); |
SrcHash |
pub const SrcHash = [16]u8; |
hashSrc() |
pub fn hashSrc(src: []const u8) SrcHash { var out: SrcHash = undefined; std.crypto.hash.Blake3.hash(src, &out, .{}); return out; |
binNameAlloc() |
} |
hashName() |
pub fn srcHashEql(a: SrcHash, b: SrcHash) bool { return @as(u128, @bitCast(a)) == @as(u128, @bitCast(b)); |
binNameAlloc() |
} |
eql() |
pub fn hashName(parent_hash: SrcHash, sep: []const u8, name: []const u8) SrcHash { var out: SrcHash = undefined; var hasher = std.crypto.hash.Blake3.init(.{}); hasher.update(&parent_hash); hasher.update(sep); hasher.update(name); hasher.final(&out); return out; |
binNameAlloc() |
} |
lineDelta() |
pub const Loc = struct { line: usize, column: usize, /// Does not include the trailing newline. source_line: []const u8, |
BinNameOptions |
pub fn eql(a: Loc, b: Loc) bool { return a.line == b.line and a.column == b.column and std.mem.eql(u8, a.source_line, b.source_line); } }; |
binNameAlloc() |
pub fn findLineColumn(source: []const u8, byte_offset: usize) Loc { var line: usize = 0; var column: usize = 0; var line_start: usize = 0; var i: usize = 0; while (i < byte_offset) : (i += 1) { switch (source[i]) { '\n' => { line += 1; column = 0; line_start = i + 1; }, else => { column += 1; }, } } while (i < source.len and source[i] != '\n') { i += 1; } return .{ .line = line, .column = column, .source_line = source[line_start..i], }; } pub fn lineDelta(source: []const u8, start: usize, end: usize) isize { var line: isize = 0; if (end >= start) { for (source[start..end]) |byte| switch (byte) { '\n' => line += 1, else => continue, }; } else { for (source[end..start]) |byte| switch (byte) { '\n' => line -= 1, else => continue, }; } return line; } pub const BinNameOptions = struct { root_name: []const u8, target: std.Target, output_mode: std.builtin.OutputMode, link_mode: ?std.builtin.LinkMode = null, version: ?std.SemanticVersion = null, }; /// Returns the standard file system basename of a binary generated by the Zig compiler. pub fn binNameAlloc(allocator: std.mem.Allocator, options: BinNameOptions) error{OutOfMemory}![]u8 { const root_name = options.root_name; const target = options.target; switch (target.ofmt) { .coff => switch (options.output_mode) { .Exe => return std.fmt.allocPrint(allocator, "{s}{s}", .{ root_name, target.exeFileExt() }), .Lib => { const suffix = switch (options.link_mode orelse .Static) { .Static => ".lib", .Dynamic => ".dll", }; return std.fmt.allocPrint(allocator, "{s}{s}", .{ root_name, suffix }); }, .Obj => return std.fmt.allocPrint(allocator, "{s}.obj", .{root_name}), }, .elf => switch (options.output_mode) { .Exe => return allocator.dupe(u8, root_name), .Lib => { switch (options.link_mode orelse .Static) { .Static => return std.fmt.allocPrint(allocator, "{s}{s}.a", .{ target.libPrefix(), root_name, }), .Dynamic => { if (options.version) |ver| { return std.fmt.allocPrint(allocator, "{s}{s}.so.{d}.{d}.{d}", .{ target.libPrefix(), root_name, ver.major, ver.minor, ver.patch, }); } else { return std.fmt.allocPrint(allocator, "{s}{s}.so", .{ target.libPrefix(), root_name, }); } }, } }, .Obj => return std.fmt.allocPrint(allocator, "{s}.o", .{root_name}), }, .macho => switch (options.output_mode) { .Exe => return allocator.dupe(u8, root_name), .Lib => { switch (options.link_mode orelse .Static) { .Static => return std.fmt.allocPrint(allocator, "{s}{s}.a", .{ target.libPrefix(), root_name, }), .Dynamic => { if (options.version) |ver| { return std.fmt.allocPrint(allocator, "{s}{s}.{d}.{d}.{d}.dylib", .{ target.libPrefix(), root_name, ver.major, ver.minor, ver.patch, }); } else { return std.fmt.allocPrint(allocator, "{s}{s}.dylib", .{ target.libPrefix(), root_name, }); } }, } }, .Obj => return std.fmt.allocPrint(allocator, "{s}.o", .{root_name}), }, .wasm => switch (options.output_mode) { .Exe => return std.fmt.allocPrint(allocator, "{s}{s}", .{ root_name, target.exeFileExt() }), .Lib => { switch (options.link_mode orelse .Static) { .Static => return std.fmt.allocPrint(allocator, "{s}{s}.a", .{ target.libPrefix(), root_name, }), .Dynamic => return std.fmt.allocPrint(allocator, "{s}.wasm", .{root_name}), } }, .Obj => return std.fmt.allocPrint(allocator, "{s}.o", .{root_name}), }, .c => return std.fmt.allocPrint(allocator, "{s}.c", .{root_name}), .spirv => return std.fmt.allocPrint(allocator, "{s}.spv", .{root_name}), .hex => return std.fmt.allocPrint(allocator, "{s}.ihex", .{root_name}), .raw => return std.fmt.allocPrint(allocator, "{s}.bin", .{root_name}), .plan9 => switch (options.output_mode) { .Exe => return allocator.dupe(u8, root_name), .Obj => return std.fmt.allocPrint(allocator, "{s}{s}", .{ root_name, target.ofmt.fileExt(target.cpu.arch), }), .Lib => return std.fmt.allocPrint(allocator, "{s}{s}.a", .{ target.libPrefix(), root_name, }), }, .nvptx => return std.fmt.allocPrint(allocator, "{s}.ptx", .{root_name}), .dxcontainer => return std.fmt.allocPrint(allocator, "{s}.dxil", .{root_name}), } } test { @import("std").testing.refAllDecls(@This()); } |
Generated by zstd-live on 2025-08-12 12:37:58 UTC. |