tiny.choir.backends.wasm.binary
Defined in backends.wasm.
API (22)
Actions
Public operations.
Count.writeAllCount.writeByteFixed.finishFixed.initFixed.writeAllFixed.writeBytewriteF32writeF64writeHeaderwriteLittleU32writeLittleU64writeNamewriteSectionHeaderwriteSlebwriteUlebwriteValueType
Types and contracts
Public types and contracts.
Values and defaults
Public values and defaults.
Source
Source: lib/choir/src/backends/wasm/binary/model.zig:17
pub const ExternalKind = enum(u8) { function = 0, memory = 2,};Source: lib/choir/src/backends/wasm/binary/model.zig:8
pub const Section = enum(u8) { type = 1, import = 2, function = 3, memory = 5, export_ = 7, code = 10,};Source: lib/choir/src/backends/wasm/binary/model.zig:1
pub const ValueType = enum(u8) { i32 = 0x7f, i64 = 0x7e, f32 = 0x7d, f64 = 0x7c,};Source: lib/choir/src/backends/wasm/binary/sink.zig:3
pub const Count = struct { len: usize = 0, pub fn writeByte(self: *Count, _: u8) error{CapacityOverflow}!void { self.len = std.math.add(usize, self.len, 1) catch return error.CapacityOverflow; } pub fn writeAll(self: *Count, bytes: []const u8) error{CapacityOverflow}!void { self.len = std.math.add(usize, self.len, bytes.len) catch return error.CapacityOverflow; }};Source: lib/choir/src/backends/wasm/binary/sink.zig:15
pub const Fixed = struct { bytes: []u8, len: usize = 0, pub fn init(bytes: []u8) Fixed { return .{ .bytes = bytes }; } pub fn writeByte(self: *Fixed, byte: u8) error{OutputOverflow}!void { if (self.len == self.bytes.len) return error.OutputOverflow; self.bytes[self.len] = byte; self.len += 1; } pub fn writeAll(self: *Fixed, bytes: []const u8) error{OutputOverflow}!void { const end = std.math.add(usize, self.len, bytes.len) catch return error.OutputOverflow; if (end > self.bytes.len) return error.OutputOverflow; @memcpy(self.bytes[self.len..end], bytes); self.len = end; } pub fn finish(self: *const Fixed) error{OutputUnderflow}![]u8 { if (self.len != self.bytes.len) return error.OutputUnderflow; return self.bytes; }};Source: lib/choir/src/backends/wasm/binary/format.zig:23
pub fn writeF32(out: anytype, value: f32) !void { try writeLittleU32(out, @bitCast(value));}Source: lib/choir/src/backends/wasm/binary/format.zig:27
pub fn writeF64(out: anytype, value: f64) !void { try writeLittleU64(out, @bitCast(value));}Source: lib/choir/src/backends/wasm/binary/format.zig:4
pub fn writeHeader(out: anytype) !void { try out.writeAll(&.{ 0x00, 0x61, 0x73, 0x6d }); try out.writeAll(&.{ 0x01, 0x00, 0x00, 0x00 });}Source: lib/choir/src/backends/wasm/binary/format.zig:31
pub fn writeLittleU32(out: anytype, value: u32) !void { try out.writeByte(@intCast(value & 0xff)); try out.writeByte(@intCast((value >> 8) & 0xff)); try out.writeByte(@intCast((value >> 16) & 0xff)); try out.writeByte(@intCast((value >> 24) & 0xff));}Source: lib/choir/src/backends/wasm/binary/format.zig:38
pub fn writeLittleU64(out: anytype, value: u64) !void { try writeLittleU32(out, @intCast(value & 0xffff_ffff)); try writeLittleU32(out, @intCast(value >> 32));}Source: lib/choir/src/backends/wasm/binary/format.zig:14
pub fn writeName(out: anytype, name: []const u8) !void { try writeUleb(out, name.len); try out.writeAll(name);}Source: lib/choir/src/backends/wasm/binary/format.zig:9
pub fn writeSectionHeader(out: anytype, section: binary.Section, body_len: usize) !void { try out.writeByte(@backingInt(section)); try writeUleb(out, body_len);}Source: lib/choir/src/backends/wasm/binary/format.zig:54
pub fn writeSleb(out: anytype, value: i64) !void { var remaining = value; while (true) { var byte: u8 = @intCast(@as(u64, @bitCast(remaining)) & 0x7f); remaining >>= 7; const sign_bit = (byte & 0x40) != 0; const done = (remaining == 0 and !sign_bit) or (remaining == -1 and sign_bit); if (!done) byte |= 0x80; try out.writeByte(byte); if (done) return; }}Source: lib/choir/src/backends/wasm/binary/format.zig:43
pub fn writeUleb(out: anytype, value: anytype) !void { var remaining: u64 = @intCast(value); while (true) { var byte: u8 = @intCast(remaining & 0x7f); remaining >>= 7; if (remaining != 0) byte |= 0x80; try out.writeByte(byte); if (remaining == 0) return; }}Source: lib/choir/src/backends/wasm/binary/format.zig:19
pub fn writeValueType(out: anytype, value_type: binary.ValueType) !void { try out.writeByte(@backingInt(value_type));}Source: lib/choir/src/backends/wasm/binary/model.zig:22
pub const empty_block_type: u8 = 0x40;Source: lib/choir/src/backends/wasm/binary/root.zig
const model = @import("model.zig");const format = @import("format.zig");const sink = @import("sink.zig");pub const ExternalKind = model.ExternalKind;pub const Section = model.Section;pub const ValueType = model.ValueType;pub const empty_block_type = model.empty_block_type;pub const Count = sink.Count;pub const Fixed = sink.Fixed;pub const writeF32 = format.writeF32;pub const writeF64 = format.writeF64;pub const writeHeader = format.writeHeader;pub const writeLittleU32 = format.writeLittleU32;pub const writeLittleU64 = format.writeLittleU64;pub const writeName = format.writeName;pub const writeSectionHeader = format.writeSectionHeader;pub const writeSleb = format.writeSleb;pub const writeUleb = format.writeUleb;pub const writeValueType = format.writeValueType;Source: lib/choir/src/backends/wasm/root.zig:2
pub const binary = @import("binary/root.zig");Audit
| Definitions | 23 |
|---|---|
| Public names | 23 |
| Members | 15 |
| Version | 26.7.0 |
| Revision | daab053ee433 |