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 library itself.
Zig › c/ › stdlib.zig › bsearch
bsearch
stdlib.bsearch
fn bsearch (key : *const anyopaque , base : *const anyopaque , n : usize , size : usize , compare : *const fn (a : *const anyopaque , b : *const anyopaque ) callconv (.c ) c_int ) callconv (.c ) ?*anyopaque
File
Code
fn bsearch (key : *const anyopaque , base : *const anyopaque , n : usize , size : usize , compare : *const fn (a : *const anyopaque , b : *const anyopaque ) callconv (.c ) c_int ) callconv (.c ) ?*anyopaque {
const base_bytes : [*]const u8 = @ptrCast (base );
var low : usize = 0 ;
var high : usize = n ;
while (low < high ) {
const mid = low + (high - low ) / 2 ;
const elem = &base_bytes [mid * size ];
switch (std .math .order (compare (key , elem ), 0 )) {
.eq => return @constCast (elem ),
.gt => low = mid + 1 ,
.lt => high = mid ,
}
}
return null ;
}