@@ -2179,22 +2179,8 @@ pub fn byteSwapAllFields(comptime S: type, ptr: *S) void {
2179
2179
const BackingInt = std .meta .Int (.unsigned , @bitSizeOf (S ));
2180
2180
ptr .* = @bitCast (@byteSwap (@as (BackingInt , @bitCast (ptr .* ))));
2181
2181
},
2182
- .array = > {
2183
- for (ptr ) | * item | {
2184
- switch (@typeInfo (@TypeOf (item .* ))) {
2185
- .@"struct" , .@"union" , .array = > byteSwapAllFields (@TypeOf (item .* ), item ),
2186
- .@"enum" = > {
2187
- item .* = @enumFromInt (@byteSwap (@intFromEnum (item .* )));
2188
- },
2189
- .bool = > {},
2190
- .float = > | float_info | {
2191
- item .* = @bitCast (@byteSwap (@as (std .meta .Int (.unsigned , float_info .bits ), @bitCast (item .* ))));
2192
- },
2193
- else = > {
2194
- item .* = @byteSwap (item .* );
2195
- },
2196
- }
2197
- }
2182
+ .array = > | info | {
2183
+ byteSwapAllElements (info .child , ptr );
2198
2184
},
2199
2185
else = > {
2200
2186
ptr .* = @byteSwap (ptr .* );
@@ -2258,6 +2244,24 @@ test byteSwapAllFields {
2258
2244
}, k );
2259
2245
}
2260
2246
2247
+ pub fn byteSwapAllElements (comptime Elem : type , slice : []Elem ) void {
2248
+ for (slice ) | * elem | {
2249
+ switch (@typeInfo (@TypeOf (elem .* ))) {
2250
+ .@"struct" , .@"union" , .array = > byteSwapAllFields (@TypeOf (elem .* ), elem ),
2251
+ .@"enum" = > {
2252
+ elem .* = @enumFromInt (@byteSwap (@intFromEnum (elem .* )));
2253
+ },
2254
+ .bool = > {},
2255
+ .float = > | float_info | {
2256
+ elem .* = @bitCast (@byteSwap (@as (std .meta .Int (.unsigned , float_info .bits ), @bitCast (elem .* ))));
2257
+ },
2258
+ else = > {
2259
+ elem .* = @byteSwap (elem .* );
2260
+ },
2261
+ }
2262
+ }
2263
+ }
2264
+
2261
2265
/// Returns an iterator that iterates over the slices of `buffer` that are not
2262
2266
/// any of the items in `delimiters`.
2263
2267
///
0 commit comments