struct Params [src]

Fields

properties: Properties
dict_size: u32
unpacked_size: ?u64

Members

Source

pub const Params = struct { properties: Properties, dict_size: u32, unpacked_size: ?u64, pub fn readHeader(reader: anytype, options: Options) !Params { var props = try reader.readByte(); if (props >= 225) { return error.CorruptInput; } const lc = @as(u4, @intCast(props % 9)); props /= 9; const lp = @as(u3, @intCast(props % 5)); props /= 5; const pb = @as(u3, @intCast(props)); const dict_size_provided = try reader.readInt(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.readInt(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.readInt(u64, .little); break :blk x; }, .use_provided => |x| x, }; return Params{ .properties = Properties{ .lc = lc, .lp = lp, .pb = pb }, .dict_size = dict_size, .unpacked_size = unpacked_size, }; } }