Function decode [src]

Prototype

pub fn decode(in: *Reader) DecodeError!Header

Parameters

in: *Reader

Possible Errors

EndOfStream Error
ReadFailed Error

See the Reader implementation for detailed diagnostics.

ReservedBitSet

Source

pub fn decode(in: *Reader) DecodeError!Header { const descriptor: Descriptor = @bitCast(try in.takeByte()); if (descriptor.reserved) return error.ReservedBitSet; const window_descriptor: ?u8 = if (descriptor.single_segment_flag) null else try in.takeByte(); const dictionary_id: ?u32 = if (descriptor.dictionary_id_flag > 0) d: { // if flag is 3 then field_size = 4, else field_size = flag const field_size = (@as(u4, 1) << descriptor.dictionary_id_flag) >> 1; break :d try in.takeVarInt(u32, .little, field_size); } else null; const content_size: ?u64 = if (descriptor.single_segment_flag or descriptor.content_size_flag > 0) c: { const field_size = @as(u4, 1) << descriptor.content_size_flag; const content_size = try in.takeVarInt(u64, .little, field_size); break :c if (field_size == 2) content_size + 256 else content_size; } else null; return .{ .descriptor = descriptor, .window_descriptor = window_descriptor, .dictionary_id = dictionary_id, .content_size = content_size, }; }