1#![allow(non_camel_case_types)]
2
3use std::ffi::c_void;
4
5pub type compression_algorithm = u32;
6pub type compression_stream_operation = i32;
7pub type compression_status = i32;
8
9pub const COMPRESSION_LZ4: compression_algorithm = 0x100;
10pub const COMPRESSION_ZLIB: compression_algorithm = 0x205;
11pub const COMPRESSION_LZMA: compression_algorithm = 0x306;
12pub const COMPRESSION_LZ4_RAW: compression_algorithm = 0x101;
13pub const COMPRESSION_BROTLI: compression_algorithm = 0xB02;
14pub const COMPRESSION_LZFSE: compression_algorithm = 0x801;
15pub const COMPRESSION_LZBITMAP: compression_algorithm = 0x702;
16
17pub const COMPRESSION_STREAM_ENCODE: compression_stream_operation = 0;
18pub const COMPRESSION_STREAM_DECODE: compression_stream_operation = 1;
19
20pub const COMPRESSION_STREAM_FINALIZE: i32 = 0x0001;
21
22pub const COMPRESSION_STATUS_OK: compression_status = 0;
23pub const COMPRESSION_STATUS_ERROR: compression_status = -1;
24pub const COMPRESSION_STATUS_END: compression_status = 1;
25
26#[repr(C)]
27#[derive(Clone, Copy, Debug, Default)]
28pub struct compression_stream {
29 pub dst_ptr: *mut u8,
30 pub dst_size: usize,
31 pub src_ptr: *const u8,
32 pub src_size: usize,
33 pub state: *mut c_void,
34}
35
36unsafe extern "C" {
37 pub fn compression_encode_scratch_buffer_size(algorithm: compression_algorithm) -> usize;
38 pub fn compression_encode_buffer(
39 dst_buffer: *mut u8,
40 dst_size: usize,
41 src_buffer: *const u8,
42 src_size: usize,
43 scratch_buffer: *mut c_void,
44 algorithm: compression_algorithm,
45 ) -> usize;
46 pub fn compression_decode_scratch_buffer_size(algorithm: compression_algorithm) -> usize;
47 pub fn compression_decode_buffer(
48 dst_buffer: *mut u8,
49 dst_size: usize,
50 src_buffer: *const u8,
51 src_size: usize,
52 scratch_buffer: *mut c_void,
53 algorithm: compression_algorithm,
54 ) -> usize;
55 pub fn compression_stream_init(
56 stream: *mut compression_stream,
57 operation: compression_stream_operation,
58 algorithm: compression_algorithm,
59 ) -> compression_status;
60 pub fn compression_stream_process(
61 stream: *mut compression_stream,
62 flags: i32,
63 ) -> compression_status;
64 pub fn compression_stream_destroy(stream: *mut compression_stream) -> compression_status;
65}