#![allow(unsafe_code)]
use crate::panic_guard::FfiBoundary;
use crate::runtime::{EngineContext, FfiPtr};
#[doc(hidden)]
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__handler__rnd_init(ctx: *mut EngineContext, scan: bool) -> i32 {
FfiBoundary::run(|| {
unsafe { &mut *ctx }.engine_mut().rnd_init(scan)
})
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__handler__rnd_next(
ctx: *mut EngineContext,
buf: *mut u8,
buf_len: usize,
) -> i32 {
FfiBoundary::run(|| {
let engine = unsafe { &mut *ctx }.engine_mut();
engine.rnd_next(unsafe { FfiPtr::slice_mut(buf, buf_len) })
})
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__handler__rnd_end(ctx: *mut EngineContext) -> i32 {
FfiBoundary::run(|| {
unsafe { &mut *ctx }.engine_mut().rnd_end()
})
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__handler__rnd_pos(
ctx: *mut EngineContext,
buf: *mut u8,
buf_len: usize,
pos: *const u8,
pos_len: usize,
) -> i32 {
FfiBoundary::run(|| {
let engine = unsafe { &mut *ctx }.engine_mut();
let buf = unsafe { FfiPtr::slice_mut(buf, buf_len) };
let pos = unsafe { FfiPtr::slice_const(pos, pos_len) };
engine.rnd_pos(buf, pos)
})
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__handler__position(
ctx: *mut EngineContext,
record: *const u8,
record_len: usize,
ref_out: *mut u8,
ref_len: usize,
) {
FfiBoundary::run_void(|| {
let engine = unsafe { &mut *ctx }.engine_mut();
let record = unsafe { FfiPtr::slice_const(record, record_len) };
let ref_out = unsafe { FfiPtr::slice_mut(ref_out, ref_len) };
engine.position(record, ref_out);
});
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__handler__rnd_pos_by_record(
ctx: *mut EngineContext,
record: *mut u8,
record_len: usize,
) -> i32 {
FfiBoundary::run(|| {
let engine = unsafe { &mut *ctx }.engine_mut();
let record = unsafe { FfiPtr::slice_mut(record, record_len) };
engine.rnd_pos_by_record(record)
})
}