Function writeSliceEndian [src]
Prototype
pub inline fn writeSliceEndian( w: *Writer, Elem: type, slice: []const Elem, endian: std.builtin.Endian, ) Error!void
Parameters
w: *Writer
Elem: type
slice: []const Elem
endian: std.builtin.Endian
Possible Errors
See the Writer
implementation for detailed diagnostics.
Example
test writeSliceEndian {
var buffer: [5]u8 align(2) = undefined;
var w: Writer = .fixed(&buffer);
try w.writeByte('x');
const array: [2]u16 = .{ 0x1234, 0x5678 };
try writeSliceEndian(&w, u16, &array, .big);
try testing.expectEqualSlices(u8, &.{ 'x', 0x12, 0x34, 0x56, 0x78 }, &buffer);
}
Source
pub inline fn writeSliceEndian(
w: *Writer,
Elem: type,
slice: []const Elem,
endian: std.builtin.Endian,
) Error!void {
switch (@typeInfo(Elem)) {
.@"struct" => |info| comptime assert(info.layout != .auto),
.int, .@"enum" => {},
else => @compileError("ill-defined memory layout"),
}
if (native_endian == endian) {
return writeAll(w, @ptrCast(slice));
} else {
return writeSliceSwap(w, Elem, slice);
}
}