Function miniz_oxide::inflate::core::decompress [−][src]
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_cur
is full, the end of the deflate stream is hit, or there is an error in the
deflate stream.
Arguments
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_cur
is a mutable cursor into the buffer that will store the decompressed data, and that
stores previously decompressed data if any.
- The position of the output cursor indicates where in the output buffer slice writing should start.
- If TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF is 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
Flags to indicate settings and status to the decompression function.
- The
TINFL_FLAG_HAS_MORE_INPUT
has to be specified if more compressed data is to be provided in a subsequent call to this function. - See the the
inflate_flags
module 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_cur
.
Updates the position of out_cur
to point to the next free spot in the output buffer.
This function shouldn’t panic pending any bugs.