Struct miniz_oxide::inflate::core::HuffmanTable

source ·
struct HuffmanTable {
    pub look_up: [i16; 1024],
    pub tree: [i16; 576],
}
Expand description

A struct containing huffman code lengths and the huffman code tree used by the decompressor.

Fields§

§look_up: [i16; 1024]

Fast lookup table for shorter huffman codes.

See HuffmanTable::fast_lookup.

§tree: [i16; 576]

Full huffman tree.

Positive values are edge nodes/symbols, negative values are parent nodes/references to other nodes.

Implementations§

source§

impl HuffmanTable

source

const fn new() -> HuffmanTable

source

fn fast_lookup(&self, bit_buf: u64) -> i16

Look for a symbol in the fast lookup table. The symbol is stored in the lower 9 bits, the length in the next 6. If the returned value is negative, the code wasn’t found in the fast lookup table and the full tree has to be traversed to find the code.

source

fn tree_lookup( &self, fast_symbol: i32, bit_buf: u64, code_len: u8, ) -> (i32, u32)

Get the symbol and the code length from the huffman tree.

source

fn lookup(&self, bit_buf: u64) -> (i32, u32)

Look up a symbol and code length from the bits in the provided bit buffer.

Returns Some(symbol, length) on success, None if the length is 0.

It’s possible we could avoid checking for 0 if we can guarantee a sane table. TODO: Check if a smaller type for code_len helps performance.

Trait Implementations§

source§

impl Clone for HuffmanTable

source§

fn clone(&self) -> HuffmanTable

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. 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> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.