#![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__write_row(
ctx: *mut EngineContext,
buf: *const u8,
buf_len: usize,
) -> i32 {
FfiBoundary::run(|| {
let engine = unsafe { &mut *ctx }.engine_mut();
let buf = unsafe { FfiPtr::slice_const(buf, buf_len) };
engine.write_row(buf)
})
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__handler__update_row(
ctx: *mut EngineContext,
old: *const u8,
old_len: usize,
new: *const u8,
new_len: usize,
) -> i32 {
FfiBoundary::run(|| {
let engine = unsafe { &mut *ctx }.engine_mut();
let old = unsafe { FfiPtr::slice_const(old, old_len) };
let new = unsafe { FfiPtr::slice_const(new, new_len) };
engine.update_row(old, new)
})
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__handler__delete_row(
ctx: *mut EngineContext,
buf: *const u8,
buf_len: usize,
) -> i32 {
FfiBoundary::run(|| {
let engine = unsafe { &mut *ctx }.engine_mut();
let buf = unsafe { FfiPtr::slice_const(buf, buf_len) };
engine.delete_row(buf)
})
}
#[doc(hidden)]
#[unsafe(no_mangle)]
pub unsafe extern "C" fn rust__handler__delete_all_rows(ctx: *mut EngineContext) -> i32 {
FfiBoundary::run(|| {
unsafe { &mut *ctx }.engine_mut().delete_all_rows()
})
}