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 › sort › block › Iterator Private Struct Iterator Doc Source Private Struct std.sort.block.Iterator
const Iterator = struct Fields size : usize power_of_two : usize numerator : usize decimal : usize denominator : usize decimal_step : usize numerator_step : usize Functions File sort/block.zig: 23
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85 const Iterator = struct {
size : usize ,
power_of_two : usize ,
numerator : usize ,
decimal : usize ,
denominator : usize ,
decimal_step : usize ,
numerator_step : usize ,
fn init (size2 : usize , min_level : usize ) Iterator {
const power_of_two = math .floorPowerOfTwo (usize , size2 );
const denominator = power_of_two / min_level ;
return Iterator {
.numerator = 0 ,
.decimal = 0 ,
.size = size2 ,
.power_of_two = power_of_two ,
.denominator = denominator ,
.decimal_step = size2 / denominator ,
.numerator_step = size2 % denominator ,
};
}
fn begin (self : *Iterator ) void {
self .numerator = 0 ;
self .decimal = 0 ;
}
fn nextRange (self : *Iterator ) Range {
const start = self .decimal ;
self .decimal += self .decimal_step ;
self .numerator += self .numerator_step ;
if (self .numerator >= self .denominator ) {
self .numerator -= self .denominator ;
self .decimal += 1 ;
}
return Range {
.start = start ,
.end = self .decimal ,
};
}
fn finished (self : *Iterator ) bool {
return self .decimal >= self .size ;
}
fn nextLevel (self : *Iterator ) bool {
self .decimal_step += self .decimal_step ;
self .numerator_step += self .numerator_step ;
if (self .numerator_step >= self .denominator ) {
self .numerator_step -= self .denominator ;
self .decimal_step += 1 ;
}
return (self .decimal_step < self .size );
}
fn length (self : *Iterator ) usize {
return self .decimal_step ;
}
}