From 9aeb155cbd03e099474b9592b89da97bff54073d Mon Sep 17 00:00:00 2001 From: Folkert de Vries Date: Sun, 15 Sep 2024 18:41:52 +0200 Subject: [PATCH] simplify `struct Table` --- zlib-rs/src/inflate.rs | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/zlib-rs/src/inflate.rs b/zlib-rs/src/inflate.rs index 89065bcb..549435d7 100644 --- a/zlib-rs/src/inflate.rs +++ b/zlib-rs/src/inflate.rs @@ -263,21 +263,16 @@ pub enum Mode { Bad, } -#[derive(Clone, Copy)] +#[derive(Default, Clone, Copy)] #[allow(clippy::enum_variant_names)] enum Codes { - Fixed(&'static [Code]), + #[default] + Fixed, Codes, Len, Dist, } -impl Default for Codes { - fn default() -> Self { - Codes::Fixed(&[]) - } -} - #[derive(Default, Clone, Copy)] struct Table { codes: Codes, @@ -297,12 +292,6 @@ pub(crate) struct State<'a> { /// - bit 2 true to validate check value wrap: usize, - /// table for length/literal codes - len_table: Table, - - /// table for dist codes - dist_table: Table, - /// log base 2 of requested window size wbits: usize, // allocated window if needed (capacity == 0 if unused) @@ -366,6 +355,12 @@ pub(crate) struct State<'a> { dmax: usize, flags: i32, + /// table for length/literal codes + len_table: Table, + + /// table for dist codes + dist_table: Table, + codes_codes: [Code; crate::ENOUGH_LENS], len_codes: [Code; crate::ENOUGH_LENS], dist_codes: [Code; crate::ENOUGH_DISTS], @@ -431,7 +426,7 @@ impl<'a> State<'a> { fn len_table_ref(&self) -> &[Code] { match self.len_table.codes { - Codes::Fixed(fixed) => fixed, + Codes::Fixed => &self::inffixed_tbl::LENFIX, Codes::Codes => &self.codes_codes, Codes::Len => &self.len_codes, Codes::Dist => &self.dist_codes, @@ -440,7 +435,7 @@ impl<'a> State<'a> { fn dist_table_ref(&self) -> &[Code] { match self.dist_table.codes { - Codes::Fixed(fixed) => fixed, + Codes::Fixed => &self::inffixed_tbl::DISTFIX, Codes::Codes => &self.codes_codes, Codes::Len => &self.len_codes, Codes::Dist => &self.dist_codes, @@ -955,12 +950,12 @@ impl<'a> State<'a> { // eprintln!("inflate: fixed codes block (last = {last})"); self.len_table = Table { - codes: Codes::Fixed(&self::inffixed_tbl::LENFIX), + codes: Codes::Fixed, bits: 9, }; self.dist_table = Table { - codes: Codes::Fixed(&self::inffixed_tbl::DISTFIX), + codes: Codes::Fixed, bits: 5, };