This is an automated email from the ASF dual-hosted git repository. tison pushed a commit to branch compression in repository https://gitbox.apache.org/repos/asf/datasketches-rust.git
commit 508e69c6732088a63516ba3d03326efc393c0605 Author: tison <[email protected]> AuthorDate: Wed Feb 4 17:52:34 2026 +0800 Uncompressed state Signed-off-by: tison <[email protected]> --- datasketches/src/cpc/compression.rs | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/datasketches/src/cpc/compression.rs b/datasketches/src/cpc/compression.rs index 4eb03ce..6060b5f 100644 --- a/datasketches/src/cpc/compression.rs +++ b/datasketches/src/cpc/compression.rs @@ -17,13 +17,13 @@ use std::cmp::Ordering; -use crate::cpc::CpcSketch; use crate::cpc::Flavor; use crate::cpc::compression_data::COLUMN_PERMUTATIONS_FOR_ENCODING; use crate::cpc::compression_data::ENCODING_TABLES_FOR_HIGH_ENTROPY_BYTE; use crate::cpc::compression_data::LENGTH_LIMITED_UNARY_ENCODING_TABLE65; use crate::cpc::pair_table::PairTable; use crate::cpc::pair_table::introspective_insertion_sort; +use crate::cpc::{CpcSketch, determine_flavor}; pub(super) struct CompressedState { table_data: Vec<u32>, @@ -351,6 +351,26 @@ pub(super) struct UncompressedState { window: Vec<u8>, } +impl UncompressedState { + pub fn uncompress(&mut self, source: &CompressedState, lg_k: u8, num_coupons: u32) { + match determine_flavor(lg_k, num_coupons) { + Flavor::EMPTY => self.table = PairTable::new(2, lg_k + 6), + Flavor::SPARSE => self.uncompress_sparse_flavor(source, lg_k), + Flavor::HYBRID => self.uncompress_hybrid_flavor(source, lg_k), + Flavor::PINNED => self.uncompress_pinned_flavor(source, lg_k, num_coupons), + Flavor::SLIDING => self.uncompress_sliding_flavor(source, lg_k, num_coupons), + } + } + + fn uncompress_sparse_flavor(&mut self, source: &CompressedState, lg_k: u8) {} + + fn uncompress_hybrid_flavor(&mut self, source: &CompressedState, lg_k: u8) {} + + fn uncompress_pinned_flavor(&mut self, source: &CompressedState, lg_k: u8, num_coupons: u32) {} + + fn uncompress_sliding_flavor(&mut self, source: &CompressedState, lg_k: u8, num_coupons: u32) {} +} + fn determine_pseudo_phase(lg_k: u8, num_coupons: u32) -> u8 { let k = 1 << lg_k; // This mid-range logic produces pseudo-phases. They are used to select encoding tables. --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
