ragc-core 0.1.1

Core compression and decompression algorithms for the AGC genome compression format
Documentation
// Simple test of Rust splitter FFI (called directly from Rust)
use std::ffi::CString;

fn main() {
    let test_file = "/tmp/yeast_test.fa";
    let k = 21;
    let segment_size = 10000;
    let verbosity = 2;

    println!("Testing Rust FFI for splitter detection");
    println!("File: {}", test_file);
    println!("k: {}, segment_size: {}\n", k, segment_size);

    let c_path = CString::new(test_file).unwrap();

    let result = unsafe {
        ragc_core::splitters_ffi::ragc_determine_splitters(
            c_path.as_ptr(),
            k,
            segment_size,
            verbosity,
        )
    };

    if result.is_null() {
        eprintln!("ERROR: FFI returned NULL");
        return;
    }

    unsafe {
        let r = &*result;

        println!("\n=== FFI Results ===");
        println!("Singletons: {}", r.n_singletons);
        println!("Duplicates: {}", r.n_duplicates);
        println!("Splitters:  {}", r.n_splitters);

        // Show splitters
        if r.n_splitters > 0 {
            println!("\nSplitters:");
            let splitters = std::slice::from_raw_parts(r.splitters, r.n_splitters);
            for (i, &sp) in splitters.iter().enumerate() {
                println!("  {}: {:016x}", i, sp);
            }
        }

        // Clean up
        ragc_core::splitters_ffi::ragc_free_splitters(result);

        println!("\n✓ FFI test completed successfully!");
    }
}