Zig 0.17.0-dev (Split by item) This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig standard library.
std › compress › flate › Compress › huffman › buildValues Private Function buildValues Doc Source Private Function std.compress.flate.Compress.huffman.buildValues
fn buildValues (freqs : []const u16 , out_codes : []u16 , bits : []u4 , bit_counts : [16 ]u16 ) u32 Params freqs : []const u16 out_codes : []u16 bits : []u4 bit_counts : [16 ]u16 File compress/flate/Compress.zig: 1244
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260 fn buildValues (freqs : []const u16 , out_codes : []u16 , bits : []u4 , bit_counts : [16 ]u16 ) u32 {
var code : u16 = 0 ;
var base : [16 ]u16 = undefined ;
assert (bit_counts [0 ] == 0 );
for (bit_counts [1 ..], base [1 ..]) |c , *b | {
b .* = code ;
code +%= c ;
code <<= 1 ;
}
var freq_sums : [16 ]u16 = @splat (0 );
for (out_codes , bits , freqs ) |*c , b , f | {
c .* = @bitReverse (base [b ]) >> -%b ;
base [b ] += 1 ; // For `b == 0` this is fine since v is specified to be undefined.
freq_sums [b ] += f ;
}
return @reduce (.Add , @as (@Vector (16 , u32 ), freq_sums ) * std .simd .iota (u32 , 16 ));
}