use crate::preprocessing::preprocess_raw_contig;
#[no_mangle]
pub extern "C" fn ragc_preprocess_raw_contig(
contig_ptr: *mut u8,
contig_len: usize,
contig_capacity: usize,
) -> usize {
unsafe {
let mut contig = Vec::from_raw_parts(contig_ptr, contig_len, contig_capacity);
preprocess_raw_contig(&mut contig);
let new_len = contig.len();
std::mem::forget(contig);
new_len
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_ffi_preprocess_raw_contig() {
let mut data = b"ACGT".to_vec();
let ptr = data.as_mut_ptr();
let len = data.len();
let cap = data.capacity();
std::mem::forget(data);
let new_len = ragc_preprocess_raw_contig(ptr, len, cap);
let result = unsafe { Vec::from_raw_parts(ptr, new_len, cap) };
assert_eq!(result, vec![0, 1, 2, 3]);
}
}