Files
daqbuffer/bitshuffle/src/lib.rs
Dominik Werder 3afcddb1c7 After rustfmt
2021-04-16 14:43:21 +02:00

53 lines
1.1 KiB
Rust

use libc::size_t;
extern "C" {
pub fn bshuf_compress_lz4(
inp: *const u8,
out: *const u8,
size: size_t,
elem_size: size_t,
block_size: size_t,
) -> i64;
pub fn bshuf_decompress_lz4(
inp: *const u8,
out: *const u8,
size: size_t,
elem_size: size_t,
block_size: size_t,
) -> i64;
}
pub fn bitshuffle_compress(
inp: &[u8],
out: &mut [u8],
size: usize,
elem_size: usize,
block_size: usize,
) -> Result<usize, isize> {
unsafe {
let n = bshuf_compress_lz4(inp.as_ptr(), out.as_mut_ptr(), size, elem_size, block_size);
if n >= 0 {
Ok(n as usize)
} else {
Err(n as isize)
}
}
}
pub fn bitshuffle_decompress(
inp: &[u8],
out: &mut [u8],
size: usize,
elem_size: usize,
block_size: usize,
) -> Result<usize, isize> {
unsafe {
let n = bshuf_decompress_lz4(inp.as_ptr(), out.as_mut_ptr(), size, elem_size, block_size);
if n >= 0 {
Ok(n as usize)
} else {
Err(n as isize)
}
}
}