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 › std/ › crypto/ › codecs/ › asn1/ › Oid.zig › toDot
toDot
Oid.toDot
pub fn toDot (self : Oid , writer : *std .Io .Writer ) std .Io .Writer .Error !void
File
Code
pub fn toDot (self : Oid , writer : *std .Io .Writer ) std .Io .Writer .Error !void {
const encoded = self .encoded ;
const first = @divTrunc (encoded [0 ], 40 );
const second = encoded [0 ] - first * 40 ;
try writer .print ("{d}.{d}" , .{ first , second });
var i : usize = 1 ;
while (i != encoded .len ) {
const n_bytes : usize = brk : {
var res : usize = 1 ;
var j : usize = i ;
while (encoded [j ] & 0x80 != 0 ) {
res += 1 ;
j += 1 ;
}
break :brk res ;
};
var n : usize = 0 ;
for (0 ..n_bytes ) |j | {
const place = std .math .pow (usize , encoding_base , n_bytes - j - 1 );
n += place * (encoded [i ] & 0b01111111 );
i += 1 ;
}
try writer .print (".{d}" , .{n });
}
}