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 › array_hash_map › Custom › dumpStateContext Private Function dumpStateContext Doc Source Private Function std.array_hash_map.Custom.dumpStateContext
fn dumpStateContext (self : Self , comptime keyFmt : []const u8 , comptime valueFmt : []const u8 , ctx : Context ) void Params self : Self keyFmt : []const u8 valueFmt : []const u8 ctx : Context File array_hash_map.zig: 1493
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523 fn dumpStateContext (self : Self , comptime keyFmt : []const u8 , comptime valueFmt : []const u8 , ctx : Context ) void {
const p = std .debug .print ;
p ("{s}:\n" , .{@typeName (Self )});
const slice = self .entries .slice ();
const hash_status = if (store_hash ) "stored" else "computed" ;
p (" len={} capacity={} hashes {s}\n" , .{ slice .len , slice .capacity , hash_status });
var i : usize = 0 ;
const mask : u32 = if (self .index_header ) |header | header .mask () else ~@as (u32 , 0 );
while (i < slice .len ) : (i += 1 ) {
const hash = if (store_hash ) slice .items (.hash )[i ] else checkedHash (ctx , slice .items (.key )[i ]);
if (store_hash ) {
p (
" [{}]: key=" ++ keyFmt ++ " value=" ++ valueFmt ++ " hash=0x{x} slot=[0x{x}]\n" ,
.{ i , slice .items (.key )[i ], slice .items (.value )[i ], hash , hash & mask },
);
} else {
p (
" [{}]: key=" ++ keyFmt ++ " value=" ++ valueFmt ++ " slot=[0x{x}]\n" ,
.{ i , slice .items (.key )[i ], slice .items (.value )[i ], hash & mask },
);
}
}
if (self .index_header ) |header | {
p ("\n" , .{});
switch (header .capacityIndexType ()) {
.u8 => dumpIndex (header , u8 ),
.u16 => dumpIndex (header , u16 ),
.u32 => dumpIndex (header , u32 ),
}
}
}