diff --git a/rust/src/dict_builder_zdict.rs b/rust/src/dict_builder_zdict.rs index 56f3cd67a..5488b2fed 100644 --- a/rust/src/dict_builder_zdict.rs +++ b/rust/src/dict_builder_zdict.rs @@ -14,15 +14,21 @@ use crate::bits::ZSTD_highbit32; use crate::common::{LL_FSE_LOG, MAX_LL, MAX_ML, ML_FSE_LOG, OFF_FSE_LOG, ZSTD_REP_NUM}; +use crate::dict_builder_fastcover::{ + ZDICT_fastCover_params_t, ZDICT_optimizeTrainFromBuffer_fastCover, +}; use crate::divsufsort::divsufsort; use crate::errors::{ERR_getErrorName, ERR_isError, ZstdErrorCode, ERROR}; use crate::fse_compress::{FSE_normalizeCount, FSE_writeNCount}; use crate::huf_compress::{HUF_buildCTable_wksp, HUF_writeCTable_wksp}; use crate::mem::{MEM_readLE32, MEM_writeLE32}; use crate::xxhash::XXH64; +use crate::zstd_compress_dictionary::ZSTD_rust_loadCEntropy; use crate::zstd_compress_params::{ZSTD_compressionParameters, ZSTD_parameters}; use crate::zstd_compress_sequences::SeqDef; -use crate::zstd_compress_stats::{SeqStore_t, ZSTD_compressedBlockState_t, ZSTD_seqToCodes}; +use crate::zstd_compress_stats::{ + SeqStore_t, ZSTD_compressedBlockState_t, ZSTD_rust_resetCompressedBlockState, ZSTD_seqToCodes, +}; use std::ffi::{c_char, c_void}; use std::mem::{size_of, MaybeUninit}; use std::os::raw::{c_int, c_uint}; @@ -68,25 +74,6 @@ pub struct ZDICT_legacy_params_t { pub zParams: ZDICT_params_t, } -/// ABI-compatible fastCOVER parameters used by `ZDICT_trainFromBuffer()`. -/// -/// The type is local to this module because the public fastCOVER declaration -/// is still provided by the C header and implementation. -#[repr(C)] -#[derive(Clone, Copy, Debug, Default)] -struct ZDICT_fastCover_params_t { - k: c_uint, - d: c_uint, - f: c_uint, - steps: c_uint, - nbThreads: c_uint, - splitPoint: f64, - accel: c_uint, - shrinkDict: c_uint, - shrinkDictMaxRegression: c_uint, - zParams: ZDICT_params_t, -} - type ZSTD_CCtx = c_void; type ZSTD_CDict = c_void; @@ -105,13 +92,6 @@ const ZSTD_DEFAULT_CMEM: ZSTD_customMem = ZSTD_customMem { }; unsafe extern "C" { - fn ZSTD_loadCEntropy( - bs: *mut ZSTD_compressedBlockState_t, - workspace: *mut c_void, - dict: *const c_void, - dict_size: usize, - ) -> usize; - fn ZSTD_reset_compressedBlockState(bs: *mut ZSTD_compressedBlockState_t); fn ZSTD_getParams( compression_level: c_int, estimated_src_size: u64, @@ -140,14 +120,6 @@ unsafe extern "C" { src_size: usize, ) -> usize; fn ZSTD_getSeqStore(cctx: *const ZSTD_CCtx) -> *const SeqStore_t; - fn ZDICT_optimizeTrainFromBuffer_fastCover( - dict_buffer: *mut c_void, - dict_buffer_capacity: usize, - samples_buffer: *const c_void, - samples_sizes: *const usize, - nb_samples: c_uint, - parameters: *mut ZDICT_fastCover_params_t, - ) -> usize; } #[inline] @@ -959,8 +931,8 @@ pub unsafe extern "C" fn ZDICT_getDictHeaderSize( let mut state = unsafe { MaybeUninit::::zeroed().assume_init() }; let mut workspace = vec![0u32; HUF_WORKSPACE_SIZE / size_of::()]; unsafe { - ZSTD_reset_compressedBlockState(&mut state); - ZSTD_loadCEntropy( + ZSTD_rust_resetCompressedBlockState(&mut state); + ZSTD_rust_loadCEntropy( &mut state, workspace.as_mut_ptr().cast(), dict_buffer, @@ -1234,9 +1206,9 @@ pub unsafe extern "C" fn ZDICT_trainFromBuffer( let mut params = ZDICT_fastCover_params_t { d: 8, steps: 4, - zParams: ZDICT_params_t { + zParams: crate::dict_builder_cover::ZDICT_params_t { compressionLevel: ZSTD_CLEVEL_DEFAULT, - ..ZDICT_params_t::default() + ..crate::dict_builder_cover::ZDICT_params_t::default() }, ..ZDICT_fastCover_params_t::default() };