Function array [src]

Prototype

pub inline fn array( comptime Len: type, comptime Elem: type, elems: anytype, ) [@divExact(@bitSizeOf(Len), 8) + @divExact(@bitSizeOf(Elem), 8) * elems.len]u8

Parameters

Len: typeElem: type

Source

pub inline fn array( comptime Len: type, comptime Elem: type, elems: anytype, ) [@divExact(@bitSizeOf(Len), 8) + @divExact(@bitSizeOf(Elem), 8) * elems.len]u8 { const len_size = @divExact(@bitSizeOf(Len), 8); const elem_size = @divExact(@bitSizeOf(Elem), 8); var arr: [len_size + elem_size * elems.len]u8 = undefined; std.mem.writeInt(Len, arr[0..len_size], @intCast(elem_size * elems.len), .big); const ElemInt = @Type(.{ .int = .{ .signedness = .unsigned, .bits = @bitSizeOf(Elem) } }); for (0.., @as([elems.len]Elem, elems)) |index, elem| { std.mem.writeInt( ElemInt, arr[len_size + elem_size * index ..][0..elem_size], switch (@typeInfo(Elem)) { .int => @as(Elem, elem), .@"enum" => @intFromEnum(@as(Elem, elem)), else => @bitCast(@as(Elem, elem)), }, .big, ); } return arr; }