Struct fdeflate::Decompressor

source ·
pub struct Decompressor {
    compression: CompressedBlock,
    header: BlockHeader,
    uncompressed_bytes_left: u16,
    buffer: u64,
    nbits: u8,
    queued_rle: Option<(u8, usize)>,
    queued_backref: Option<(usize, usize)>,
    last_block: bool,
    fixed_table: bool,
    state: State,
    checksum: Adler32,
    ignore_adler32: bool,
}
Expand description

Decompressor for arbitrary zlib streams.

Fields§

§compression: CompressedBlock

State for decoding a compressed block.

§header: BlockHeader§uncompressed_bytes_left: u16§buffer: u64§nbits: u8§queued_rle: Option<(u8, usize)>§queued_backref: Option<(usize, usize)>§last_block: bool§fixed_table: bool§state: State§checksum: Adler32§ignore_adler32: bool

Implementations§

source§

impl Decompressor

source

pub fn new() -> Self

Create a new decompressor.

source

pub fn ignore_adler32(&mut self)

Ignore the checksum at the end of the stream.

source

fn fill_buffer(&mut self, input: &mut &[u8])

source

fn peak_bits(&mut self, nbits: u8) -> u64

source

fn consume_bits(&mut self, nbits: u8)

source

fn read_block_header( &mut self, remaining_input: &mut &[u8], ) -> Result<(), DecompressionError>

source

fn read_code_length_codes( &mut self, remaining_input: &mut &[u8], ) -> Result<(), DecompressionError>

source

fn read_code_lengths( &mut self, remaining_input: &mut &[u8], ) -> Result<(), DecompressionError>

source

fn build_tables( hlit: usize, code_lengths: &[u8], compression: &mut CompressedBlock, ) -> Result<(), DecompressionError>

source

fn read_compressed( &mut self, remaining_input: &mut &[u8], output: &mut [u8], output_index: usize, ) -> Result<usize, DecompressionError>

source

pub fn read( &mut self, input: &[u8], output: &mut [u8], output_position: usize, end_of_input: bool, ) -> Result<(usize, usize), DecompressionError>

Decompresses a chunk of data.

Returns the number of bytes read from input and the number of bytes written to output, or an error if the deflate stream is not valid. input is the compressed data. output is the buffer to write the decompressed data to, starting at index output_position. end_of_input indicates whether more data may be available in the future.

The contents of output after output_position are ignored. However, this function may write additional data to output past what is indicated by the return value.

When this function returns Ok, at least one of the following is true:

  • The input is fully consumed.
  • The output is full but there are more bytes to output.
  • The deflate stream is complete (and is_done will return true).
§Panics

This function will panic if output_position is out of bounds.

source

pub fn is_done(&self) -> bool

Returns true if the decompressor has finished decompressing the input.

Trait Implementations§

source§

impl Default for Decompressor

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.