brotli/ffi/
decompressor.rs

1pub use brotli_decompressor::ffi;
2pub use brotli_decompressor::ffi::interface::{brotli_alloc_func, brotli_free_func, c_void};
3pub use brotli_decompressor::{BrotliDecoderReturnInfo, HuffmanCode};
4
5pub unsafe extern "C" fn CBrotliDecoderCreateInstance(
6    alloc_func: brotli_alloc_func,
7    free_func: brotli_free_func,
8    opaque: *mut c_void,
9) -> *mut ffi::BrotliDecoderState {
10    ffi::BrotliDecoderCreateInstance(alloc_func, free_func, opaque)
11}
12
13pub unsafe extern "C" fn CBrotliDecoderSetParameter(
14    state_ptr: *mut ffi::BrotliDecoderState,
15    selector: ffi::interface::BrotliDecoderParameter,
16    value: u32,
17) {
18    ffi::BrotliDecoderSetParameter(state_ptr, selector, value)
19}
20
21#[cfg(feature = "std")] // this requires a default allocator
22pub unsafe extern "C" fn CBrotliDecoderDecompress(
23    encoded_size: usize,
24    encoded_buffer: *const u8,
25    decoded_size: *mut usize,
26    decoded_buffer: *mut u8,
27) -> ffi::interface::BrotliDecoderResult {
28    ffi::BrotliDecoderDecompress(encoded_size, encoded_buffer, decoded_size, decoded_buffer)
29}
30
31pub unsafe extern "C" fn CBrotliDecoderDecompressStream(
32    state_ptr: *mut ffi::BrotliDecoderState,
33    available_in: *mut usize,
34    input_buf_ptr: *mut *const u8,
35    available_out: *mut usize,
36    output_buf_ptr: *mut *mut u8,
37    total_out: *mut usize,
38) -> ffi::interface::BrotliDecoderResult {
39    ffi::BrotliDecoderDecompressStream(
40        state_ptr,
41        available_in,
42        input_buf_ptr,
43        available_out,
44        output_buf_ptr,
45        total_out,
46    )
47}
48
49pub unsafe extern "C" fn CBrotliDecoderDecompressStreaming(
50    state_ptr: *mut ffi::BrotliDecoderState,
51    available_in: *mut usize,
52    input_buf_ptr: *const u8,
53    available_out: *mut usize,
54    output_buf_ptr: *mut u8,
55) -> ffi::interface::BrotliDecoderResult {
56    ffi::BrotliDecoderDecompressStreaming(
57        state_ptr,
58        available_in,
59        input_buf_ptr,
60        available_out,
61        output_buf_ptr,
62    )
63}
64
65pub unsafe extern "C" fn CBrotliDecoderDecompressWithReturnInfo(
66    available_in: usize,
67    input_buf_ptr: *const u8,
68    available_out_and_scratch: usize,
69    output_buf_and_scratch: *mut u8,
70) -> BrotliDecoderReturnInfo {
71    ffi::BrotliDecoderDecompressWithReturnInfo(
72        available_in,
73        input_buf_ptr,
74        available_out_and_scratch,
75        output_buf_and_scratch,
76    )
77}
78
79pub unsafe extern "C" fn CBrotliDecoderDecompressPrealloc(
80    available_in: usize,
81    input_buf_ptr: *const u8,
82    available_out: usize,
83    output_buf_ptr: *mut u8,
84    available_u8: usize,
85    u8_ptr: *mut u8,
86    available_u32: usize,
87    u32_ptr: *mut u32,
88    available_hc: usize,
89    hc_ptr: *mut HuffmanCode,
90) -> BrotliDecoderReturnInfo {
91    ffi::BrotliDecoderDecompressPrealloc(
92        available_in,
93        input_buf_ptr,
94        available_out,
95        output_buf_ptr,
96        available_u8,
97        u8_ptr,
98        available_u32,
99        u32_ptr,
100        available_hc,
101        hc_ptr,
102    )
103}
104
105pub unsafe extern "C" fn CBrotliDecoderMallocU8(
106    state_ptr: *mut ffi::BrotliDecoderState,
107    size: usize,
108) -> *mut u8 {
109    ffi::BrotliDecoderMallocU8(state_ptr, size)
110}
111
112pub unsafe extern "C" fn CBrotliDecoderFreeU8(
113    state_ptr: *mut ffi::BrotliDecoderState,
114    data: *mut u8,
115    size: usize,
116) {
117    ffi::BrotliDecoderFreeU8(state_ptr, data, size)
118}
119
120pub unsafe extern "C" fn CBrotliDecoderMallocUsize(
121    state_ptr: *mut ffi::BrotliDecoderState,
122    size: usize,
123) -> *mut usize {
124    ffi::BrotliDecoderMallocUsize(state_ptr, size)
125}
126
127pub unsafe extern "C" fn CBrotliDecoderFreeUsize(
128    state_ptr: *mut ffi::BrotliDecoderState,
129    data: *mut usize,
130    size: usize,
131) {
132    ffi::BrotliDecoderFreeUsize(state_ptr, data, size)
133}
134
135pub unsafe extern "C" fn CBrotliDecoderDestroyInstance(state_ptr: *mut ffi::BrotliDecoderState) {
136    ffi::BrotliDecoderDestroyInstance(state_ptr)
137}
138
139pub extern "C" fn CBrotliDecoderVersion() -> u32 {
140    ffi::BrotliDecoderVersion()
141}
142
143#[no_mangle]
144pub extern "C" fn CBrotliDecoderErrorString(c: ffi::BrotliDecoderErrorCode) -> *const u8 {
145    ffi::BrotliDecoderErrorString(c)
146}
147
148#[no_mangle]
149pub unsafe extern "C" fn CBrotliDecoderHasMoreOutput(
150    state_ptr: *const ffi::BrotliDecoderState,
151) -> i32 {
152    ffi::BrotliDecoderHasMoreOutput(state_ptr)
153}
154
155#[no_mangle]
156pub unsafe extern "C" fn CBrotliDecoderTakeOutput(
157    state_ptr: *mut ffi::BrotliDecoderState,
158    size: *mut usize,
159) -> *const u8 {
160    ffi::BrotliDecoderTakeOutput(state_ptr, size)
161}
162
163#[no_mangle]
164pub unsafe extern "C" fn CBrotliDecoderIsUsed(state_ptr: *const ffi::BrotliDecoderState) -> i32 {
165    ffi::BrotliDecoderIsUsed(state_ptr)
166}
167#[no_mangle]
168pub unsafe extern "C" fn CBrotliDecoderIsFinished(
169    state_ptr: *const ffi::BrotliDecoderState,
170) -> i32 {
171    ffi::BrotliDecoderIsFinished(state_ptr)
172}
173#[no_mangle]
174pub unsafe extern "C" fn CBrotliDecoderGetErrorCode(
175    state_ptr: *const ffi::BrotliDecoderState,
176) -> ffi::BrotliDecoderErrorCode {
177    ffi::BrotliDecoderGetErrorCode(state_ptr)
178}
179#[no_mangle]
180pub unsafe extern "C" fn CBrotliDecoderGetErrorString(
181    state_ptr: *const ffi::BrotliDecoderState,
182) -> *const u8 {
183    ffi::BrotliDecoderGetErrorString(state_ptr)
184}