Function resetState [src]

Prototype

pub fn resetState(self: *DecoderState, allocator: Allocator, new_props: Properties) !void

Parameters

self: *DecoderStateallocator: Allocatornew_props: Properties

Source

pub fn resetState(self: *DecoderState, allocator: Allocator, new_props: Properties) !void { new_props.validate(); if (self.lzma_props.lc + self.lzma_props.lp == new_props.lc + new_props.lp) { self.literal_probs.fill(0x400); } else { self.literal_probs.deinit(allocator); self.literal_probs = try Vec2D(u16).init(allocator, 0x400, .{ @as(usize, 1) << (new_props.lc + new_props.lp), 0x300 }); } self.lzma_props = new_props; for (&self.pos_slot_decoder) |*t| t.reset(); self.align_decoder.reset(); self.pos_decoders = @splat(0x400); self.is_match = @splat(0x400); self.is_rep = @splat(0x400); self.is_rep_g0 = @splat(0x400); self.is_rep_g1 = @splat(0x400); self.is_rep_g2 = @splat(0x400); self.is_rep_0long = @splat(0x400); self.state = 0; self.rep = @splat(0); self.len_decoder.reset(); self.rep_len_decoder.reset(); }