DoxigAlpha

decode

Function parameters

Parameters

#
reader:anytype

Type definitions in this namespace

Types

#
Element
A decoded view.
ExpectedTag
For decoding.
Any
Use sparingly.

Functions in this namespace

Functions

#

Source

Implementation

#
pub fn decode(reader: anytype) !Tag {
    const tag1: FirstTag = @bitCast(try reader.readByte());
    var number: u14 = tag1.number;

    if (tag1.number == 15) {
        const tag2: NextTag = @bitCast(try reader.readByte());
        number = tag2.number;
        if (tag2.continues) {
            const tag3: NextTag = @bitCast(try reader.readByte());
            number = (number << 7) + tag3.number;
            if (tag3.continues) return error.InvalidLength;
        }
    }

    return Tag{
        .number = @enumFromInt(number),
        .constructed = tag1.constructed,
        .class = tag1.class,
    };
}