Function readHeader [src]

Prototype

pub fn readHeader(reader: *Reader, options: Options) !Params

Parameters

reader: *Readeroptions: Options

Source

pub fn readHeader(reader: *Reader, options: Options) !Params { var props = try reader.takeByte(); if (props >= 225) return error.CorruptInput; const lc: u4 = @intCast(props % 9); props /= 9; const lp: u3 = @intCast(props % 5); props /= 5; const pb: u3 = @intCast(props); const dict_size_provided = try reader.takeInt(u32, .little); const dict_size = @max(0x1000, dict_size_provided); const unpacked_size = switch (options.unpacked_size) { .read_from_header => blk: { const unpacked_size_provided = try reader.takeInt(u64, .little); const marker_mandatory = unpacked_size_provided == 0xFFFF_FFFF_FFFF_FFFF; break :blk if (marker_mandatory) null else unpacked_size_provided; }, .read_header_but_use_provided => |x| blk: { _ = try reader.takeInt(u64, .little); break :blk x; }, .use_provided => |x| x, }; return .{ .properties = .{ .lc = lc, .lp = lp, .pb = pb }, .dict_size = dict_size, .unpacked_size = unpacked_size, }; }