Function decodeSequenceSlice [src]

Decode one sequence from bit_reader into dest, written starting at write_pos and update FSE states if last_sequence is false. prepare() must be called for the block before attempting to decode sequences. Errors returned: error.MalformedSequence if the decompressed sequence would be longer than sequence_size_limit or the sequence's offset is too large error.UnexpectedEndOfLiteralStream if the decoder state's literal streams do not contain enough literals for the sequence (this may mean the literal stream or the sequence is malformed). error.InvalidBitStream if the FSE sequence bitstream is malformed error.EndOfStream if bit_reader does not contain enough bits error.DestTooSmall if dest is not large enough to holde the decompressed sequence

Prototype

pub fn decodeSequenceSlice( self: *DecodeState, dest: []u8, write_pos: usize, bit_reader: *readers.ReverseBitReader, sequence_size_limit: usize, last_sequence: bool, ) (error{DestTooSmall} || DecodeSequenceError)!usize

Parameters

self: *DecodeStatedest: []u8write_pos: usizebit_reader: *readers.ReverseBitReadersequence_size_limit: usizelast_sequence: bool

Source

pub fn decodeSequenceSlice( self: *DecodeState, dest: []u8, write_pos: usize, bit_reader: *readers.ReverseBitReader, sequence_size_limit: usize, last_sequence: bool, ) (error{DestTooSmall} || DecodeSequenceError)!usize { const sequence = try self.nextSequence(bit_reader); const sequence_length = @as(usize, sequence.literal_length) + sequence.match_length; if (sequence_length > sequence_size_limit) return error.MalformedSequence; if (sequence_length > dest[write_pos..].len) return error.DestTooSmall; try self.executeSequenceSlice(dest, write_pos, sequence); if (!last_sequence) { try self.updateState(.literal, bit_reader); try self.updateState(.match, bit_reader); try self.updateState(.offset, bit_reader); } return sequence_length; }