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]

Reply via email to