Skip to main content

libzstd_rs_sys/lib/
zstd.rs

1use libc::size_t;
2
3pub const ZSTD_VERSION_MAJOR: core::ffi::c_int = 1;
4pub const ZSTD_VERSION_MINOR: core::ffi::c_int = 5;
5pub const ZSTD_VERSION_RELEASE: core::ffi::c_int = 8;
6pub const ZSTD_VERSION_NUMBER: core::ffi::c_int =
7    ZSTD_VERSION_MAJOR * 100 * 100 + ZSTD_VERSION_MINOR * 100 + ZSTD_VERSION_RELEASE;
8
9pub type ZSTD_ErrorCode = core::ffi::c_uint;
10
11pub const ZSTD_error_maxCode: ZSTD_ErrorCode = 120;
12pub const ZSTD_error_externalSequences_invalid: ZSTD_ErrorCode = 107;
13pub const ZSTD_error_sequenceProducer_failed: ZSTD_ErrorCode = 106;
14pub const ZSTD_error_srcBuffer_wrong: ZSTD_ErrorCode = 105;
15pub const ZSTD_error_dstBuffer_wrong: ZSTD_ErrorCode = 104;
16pub const ZSTD_error_seekableIO: ZSTD_ErrorCode = 102;
17pub const ZSTD_error_frameIndex_tooLarge: ZSTD_ErrorCode = 100;
18pub const ZSTD_error_noForwardProgress_inputEmpty: ZSTD_ErrorCode = 82;
19pub const ZSTD_error_noForwardProgress_destFull: ZSTD_ErrorCode = 80;
20pub const ZSTD_error_dstBuffer_null: ZSTD_ErrorCode = 74;
21pub const ZSTD_error_srcSize_wrong: ZSTD_ErrorCode = 72;
22pub const ZSTD_error_dstSize_tooSmall: ZSTD_ErrorCode = 70;
23pub const ZSTD_error_workSpace_tooSmall: ZSTD_ErrorCode = 66;
24pub const ZSTD_error_memory_allocation: ZSTD_ErrorCode = 64;
25pub const ZSTD_error_init_missing: ZSTD_ErrorCode = 62;
26pub const ZSTD_error_stage_wrong: ZSTD_ErrorCode = 60;
27pub const ZSTD_error_stabilityCondition_notRespected: ZSTD_ErrorCode = 50;
28pub const ZSTD_error_cannotProduce_uncompressedBlock: ZSTD_ErrorCode = 49;
29pub const ZSTD_error_maxSymbolValue_tooSmall: ZSTD_ErrorCode = 48;
30pub const ZSTD_error_maxSymbolValue_tooLarge: ZSTD_ErrorCode = 46;
31pub const ZSTD_error_tableLog_tooLarge: ZSTD_ErrorCode = 44;
32pub const ZSTD_error_parameter_outOfBound: ZSTD_ErrorCode = 42;
33pub const ZSTD_error_parameter_combination_unsupported: ZSTD_ErrorCode = 41;
34pub const ZSTD_error_parameter_unsupported: ZSTD_ErrorCode = 40;
35pub const ZSTD_error_dictionaryCreation_failed: ZSTD_ErrorCode = 34;
36pub const ZSTD_error_dictionary_wrong: ZSTD_ErrorCode = 32;
37pub const ZSTD_error_dictionary_corrupted: ZSTD_ErrorCode = 30;
38pub const ZSTD_error_literals_headerWrong: ZSTD_ErrorCode = 24;
39pub const ZSTD_error_checksum_wrong: ZSTD_ErrorCode = 22;
40pub const ZSTD_error_corruption_detected: ZSTD_ErrorCode = 20;
41pub const ZSTD_error_frameParameter_windowTooLarge: ZSTD_ErrorCode = 16;
42pub const ZSTD_error_frameParameter_unsupported: ZSTD_ErrorCode = 14;
43pub const ZSTD_error_version_unsupported: ZSTD_ErrorCode = 12;
44pub const ZSTD_error_prefix_unknown: ZSTD_ErrorCode = 10;
45pub const ZSTD_error_GENERIC: ZSTD_ErrorCode = 1;
46pub const ZSTD_error_no_error: ZSTD_ErrorCode = 0;
47
48pub type ZSTD_strategy = core::ffi::c_uint;
49pub const ZSTD_btultra2: ZSTD_strategy = 9;
50pub const ZSTD_btultra: ZSTD_strategy = 8;
51pub const ZSTD_btopt: ZSTD_strategy = 7;
52pub const ZSTD_btlazy2: ZSTD_strategy = 6;
53pub const ZSTD_lazy2: ZSTD_strategy = 5;
54pub const ZSTD_lazy: ZSTD_strategy = 4;
55pub const ZSTD_greedy: ZSTD_strategy = 3;
56pub const ZSTD_dfast: ZSTD_strategy = 2;
57pub const ZSTD_fast: ZSTD_strategy = 1;
58
59#[derive(Copy, Clone)]
60#[repr(C)]
61pub struct ZSTD_compressionParameters {
62    pub windowLog: core::ffi::c_uint,
63    pub chainLog: core::ffi::c_uint,
64    pub hashLog: core::ffi::c_uint,
65    pub searchLog: core::ffi::c_uint,
66    pub minMatch: core::ffi::c_uint,
67    pub targetLength: core::ffi::c_uint,
68    pub strategy: ZSTD_strategy,
69}
70
71#[derive(Copy, Clone)]
72#[repr(C)]
73pub struct ZSTD_frameParameters {
74    pub contentSizeFlag: core::ffi::c_int,
75    pub checksumFlag: core::ffi::c_int,
76    pub noDictIDFlag: core::ffi::c_int,
77}
78
79#[derive(Copy, Clone)]
80#[repr(C)]
81pub struct ZSTD_parameters {
82    pub cParams: ZSTD_compressionParameters,
83    pub fParams: ZSTD_frameParameters,
84}
85
86#[derive(Copy, Clone)]
87#[repr(C)]
88pub struct ZSTD_customMem {
89    pub customAlloc: ZSTD_allocFunction,
90    pub customFree: ZSTD_freeFunction,
91    pub opaque: *mut core::ffi::c_void,
92}
93pub type ZSTD_freeFunction =
94    Option<unsafe extern "C" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> ()>;
95pub type ZSTD_allocFunction =
96    Option<unsafe extern "C" fn(*mut core::ffi::c_void, size_t) -> *mut core::ffi::c_void>;
97
98pub type ZSTD_format_e = core::ffi::c_uint;
99
100#[derive(Debug, Copy, Clone, PartialEq, Eq)]
101#[repr(u32)]
102pub enum Format {
103    ZSTD_f_zstd1 = 0,
104    ZSTD_f_zstd1_magicless = 1,
105}
106
107impl TryFrom<ZSTD_format_e> for Format {
108    type Error = ();
109
110    fn try_from(value: ZSTD_format_e) -> Result<Self, Self::Error> {
111        match value {
112            0 => Ok(Self::ZSTD_f_zstd1),
113            1 => Ok(Self::ZSTD_f_zstd1_magicless),
114            _ => Err(()),
115        }
116    }
117}
118
119pub type ZSTD_inBuffer = ZSTD_inBuffer_s;
120#[derive(Copy, Clone)]
121#[repr(C)]
122pub struct ZSTD_inBuffer_s {
123    pub src: *const core::ffi::c_void,
124    pub size: size_t,
125    pub pos: size_t,
126}
127
128pub type ZSTD_outBuffer = ZSTD_outBuffer_s;
129#[derive(Copy, Clone)]
130#[repr(C)]
131pub struct ZSTD_outBuffer_s {
132    pub dst: *mut core::ffi::c_void,
133    pub size: size_t,
134    pub pos: size_t,
135}
136
137pub type ZSTD_bufferMode_e = core::ffi::c_uint;
138pub const ZSTD_bm_stable: ZSTD_bufferMode_e = 1;
139pub const ZSTD_bm_buffered: ZSTD_bufferMode_e = 0;
140
141#[repr(u32)]
142#[derive(Debug, Copy, Clone, PartialEq, Eq)]
143pub enum BufferMode {
144    Buffered,
145    Stable,
146}
147
148impl TryFrom<u32> for BufferMode {
149    type Error = ();
150
151    fn try_from(value: u32) -> Result<Self, Self::Error> {
152        match value {
153            0 => Ok(Self::Buffered),
154            1 => Ok(Self::Stable),
155            _ => Err(()),
156        }
157    }
158}
159
160pub static mut ZSTD_defaultCMem: ZSTD_customMem = ZSTD_customMem {
161    customAlloc: None,
162    customFree: None,
163    opaque: core::ptr::null_mut(),
164};
165
166#[derive(Copy, Clone)]
167#[repr(C)]
168pub struct ZSTD_frameProgression {
169    pub ingested: core::ffi::c_ulonglong,
170    pub consumed: core::ffi::c_ulonglong,
171    pub produced: core::ffi::c_ulonglong,
172    pub flushed: core::ffi::c_ulonglong,
173    pub currentJobID: core::ffi::c_uint,
174    pub nbActiveWorkers: core::ffi::c_uint,
175}
176
177pub mod experimental {
178    use crate::lib::zstd::Format;
179
180    pub const fn ZSTD_FRAMEHEADERSIZE_MIN(format: Format) -> usize {
181        if let Format::ZSTD_f_zstd1 = format {
182            6
183        } else {
184            2
185        }
186    }
187
188    pub use crate::lib::common::pool::{
189        ZSTD_createThreadPool, ZSTD_freeThreadPool, ZSTD_threadPool,
190    };
191}