1#![allow(non_camel_case_types)]
2
3use std::ffi::c_void;
4
5pub type compression_algorithm = u32;
7pub type compression_stream_operation = i32;
9pub type compression_status = i32;
11
12pub const COMPRESSION_LZ4: compression_algorithm = 0x100;
14pub const COMPRESSION_ZLIB: compression_algorithm = 0x205;
16pub const COMPRESSION_LZMA: compression_algorithm = 0x306;
18pub const COMPRESSION_LZ4_RAW: compression_algorithm = 0x101;
20pub const COMPRESSION_BROTLI: compression_algorithm = 0xB02;
22pub const COMPRESSION_LZFSE: compression_algorithm = 0x801;
24pub const COMPRESSION_LZBITMAP: compression_algorithm = 0x702;
26
27pub const COMPRESSION_STREAM_ENCODE: compression_stream_operation = 0;
29pub const COMPRESSION_STREAM_DECODE: compression_stream_operation = 1;
31
32pub const COMPRESSION_STREAM_FINALIZE: i32 = 0x0001;
34
35pub const COMPRESSION_STATUS_OK: compression_status = 0;
37pub const COMPRESSION_STATUS_ERROR: compression_status = -1;
39pub const COMPRESSION_STATUS_END: compression_status = 1;
41
42#[repr(C)]
44#[derive(Clone, Copy, Debug, Default)]
45pub struct compression_stream {
46 pub dst_ptr: *mut u8,
48 pub dst_size: usize,
50 pub src_ptr: *const u8,
52 pub src_size: usize,
54 pub state: *mut c_void,
56}
57
58unsafe extern "C" {
59 pub fn compression_encode_scratch_buffer_size(algorithm: compression_algorithm) -> usize;
61 pub fn compression_encode_buffer(
63 dst_buffer: *mut u8,
64 dst_size: usize,
65 src_buffer: *const u8,
66 src_size: usize,
67 scratch_buffer: *mut c_void,
68 algorithm: compression_algorithm,
69 ) -> usize;
70 pub fn compression_decode_scratch_buffer_size(algorithm: compression_algorithm) -> usize;
72 pub fn compression_decode_buffer(
74 dst_buffer: *mut u8,
75 dst_size: usize,
76 src_buffer: *const u8,
77 src_size: usize,
78 scratch_buffer: *mut c_void,
79 algorithm: compression_algorithm,
80 ) -> usize;
81 pub fn compression_stream_init(
83 stream: *mut compression_stream,
84 operation: compression_stream_operation,
85 algorithm: compression_algorithm,
86 ) -> compression_status;
87 pub fn compression_stream_process(
89 stream: *mut compression_stream,
90 flags: i32,
91 ) -> compression_status;
92 pub fn compression_stream_destroy(stream: *mut compression_stream) -> compression_status;
94}