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 › hash › cityhash › CityHash64 › hashLen33To64 Private Function hashLen33To64 Doc Source Private Function std.hash.cityhash.CityHash64.hashLen33To64
fn hashLen33To64 (str : []const u8 ) u64 Params File hash/cityhash.zig: 241
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262 fn hashLen33To64 (str : []const u8 ) u64 {
const len : u64 = @as (u64 , str .len );
const mul : u64 = k2 +% len *% 2 ;
const a : u64 = fetch64 (str .ptr , 0 ) *% k2 ;
const b : u64 = fetch64 (str .ptr , 8 );
const c : u64 = fetch64 (str .ptr , str .len - 24 );
const d : u64 = fetch64 (str .ptr , str .len - 32 );
const e : u64 = fetch64 (str .ptr , 16 ) *% k2 ;
const f : u64 = fetch64 (str .ptr , 24 ) *% 9 ;
const g : u64 = fetch64 (str .ptr , str .len - 8 );
const h : u64 = fetch64 (str .ptr , str .len - 16 ) *% mul ;
const u : u64 = rotr64 (a +% g , 43 ) +% (rotr64 (b , 30 ) +% c ) *% 9 ;
const v : u64 = ((a +% g ) ^ d ) +% f +% 1 ;
const w : u64 = @byteSwap ((u +% v ) *% mul ) +% h ;
const x : u64 = rotr64 (e +% f , 42 ) +% c ;
const y : u64 = (@byteSwap ((v +% w ) *% mul ) +% g ) *% mul ;
const z : u64 = e +% f +% c ;
const a1 : u64 = @byteSwap ((x +% z ) *% mul +% y ) +% b ;
const b1 : u64 = shiftmix ((z +% a1 ) *% mul +% d +% h ) *% mul ;
return b1 +% x ;
}