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: *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, }; } }