DoxigAlpha

length

Encode a length.

Function parameters

Parameters

#
self:*Encoder
len:usize

Functions in this namespace

Functions

#
any
Encode any value.
tag
Encode a tag.
length
Encode a length.
tagBytes
Encode a tag and length-prefixed bytes.
writer
Warning: This writer writes backwards.

Source

Implementation

#
pub fn length(self: *Encoder, len: usize) !void {
    const writer_ = self.writer();
    if (len < 128) {
        try writer_.writeInt(u8, @intCast(len), .big);
        return;
    }
    inline for ([_]type{ u8, u16, u32 }) |T| {
        if (len < std.math.maxInt(T)) {
            try writer_.writeInt(T, @intCast(len), .big);
            try writer_.writeInt(u8, @sizeOf(T) | 0x80, .big);
            return;
        }
    }
    return error.InvalidLength;
}