pub fn decompress(
r: &mut DecompressorOxide,
in_buf: &[u8],
out: &mut [u8],
out_pos: usize,
flags: u32,
) -> (TINFLStatus, usize, usize)Expand description
Main decompression function. Keeps decompressing data from in_buf until the in_buf is
empty, out is full, the end of the deflate stream is hit, or there is an error in the
deflate stream.
§Arguments
r is a DecompressorOxide struct with the state of this stream.
in_buf is a reference to the compressed data that is to be decompressed. The decompressor will
start at the first byte of this buffer.
out is a reference to the buffer that will store the decompressed data, and that
stores previously decompressed data if any.
- The offset given by
out_posindicates where in the output buffer slice writing should start. - If
TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUFis not set, the output buffer is used in a wrapping manner, and it’s size is required to be a power of 2. - The decompression function normally needs access to 32KiB of the previously decompressed data
(or to the beginning of the decompressed data if less than 32KiB has been decompressed.)
- If this data is not available, decompression may fail.
- Some deflate compressors allow specifying a window size which limits match distances to less than this, or alternatively an RLE mode where matches will only refer to the previous byte and thus allows a smaller output buffer. The window size can be specified in the zlib header structure, however, the header data should not be relied on to be correct.
flags indicates settings and status to the decompression function.
- The
TINFL_FLAG_HAS_MORE_INPUThas to be specified if more compressed data is to be provided in a subsequent call to this function. - See the the
inflate_flagsmodule for details on other flags.
§Returns
Returns a tuple containing the status of the compressor, the number of input bytes read, and the
number of bytes output to out.