struct Record [src]

Fields

name: []const u8
id: u32
operands: []const u64
blob: []const u8

Source

pub const Record = struct { name: []const u8, id: u32, operands: []const u64, blob: []const u8, fn toOwnedAbbrev(record: Record, allocator: std.mem.Allocator) !Abbrev { var operands = std.ArrayList(Abbrev.Operand).init(allocator); defer operands.deinit(); assert(record.id == Abbrev.Builtin.define_abbrev.toRecordId()); var i: usize = 0; while (i < record.operands.len) switch (record.operands[i]) { Abbrev.Operand.literal_id => { try operands.append(.{ .literal = record.operands[i + 1] }); i += 2; }, @intFromEnum(Abbrev.Operand.Encoding.fixed) => { try operands.append(.{ .encoding = .{ .fixed = @intCast(record.operands[i + 1]) } }); i += 2; }, @intFromEnum(Abbrev.Operand.Encoding.vbr) => { try operands.append(.{ .encoding = .{ .vbr = @intCast(record.operands[i + 1]) } }); i += 2; }, @intFromEnum(Abbrev.Operand.Encoding.array) => { try operands.append(.{ .encoding = .{ .array = 6 } }); i += 1; }, @intFromEnum(Abbrev.Operand.Encoding.char6) => { try operands.append(.{ .encoding = .char6 }); i += 1; }, @intFromEnum(Abbrev.Operand.Encoding.blob) => { try operands.append(.{ .encoding = .{ .blob = 6 } }); i += 1; }, else => unreachable, }; return .{ .operands = try operands.toOwnedSlice() }; } }