Function byteSwapAllElements [src]
Reverses the byte order of all elements in a slice.
Handles structs, unions, arrays, enums, floats, and integers recursively.
Useful for converting between little-endian and big-endian representations.
Prototype
pub fn byteSwapAllElements(comptime Elem: type, slice: []Elem) void Parameters
Elem: typeslice: []Elem Source
pub fn byteSwapAllElements(comptime Elem: type, slice: []Elem) void {
for (slice) |*elem| {
switch (@typeInfo(@TypeOf(elem.*))) {
.@"struct", .@"union", .array => byteSwapAllFields(@TypeOf(elem.*), elem),
.@"enum" => {
elem.* = @enumFromInt(@byteSwap(@intFromEnum(elem.*)));
},
.bool => {},
.float => |float_info| {
elem.* = @bitCast(@byteSwap(@as(std.meta.Int(.unsigned, float_info.bits), @bitCast(elem.*))));
},
else => {
elem.* = @byteSwap(elem.*);
},
}
}
}