use core::ffi::c_void;
use crate::types::*;
#[repr(C)]
#[derive(Clone, Copy)]
pub struct FFIOperatorVTable {
pub apply: extern "C" fn(
instance: *mut c_void,
ctx: *mut FFIContext,
input: *const FlowChangeFFI,
output: *mut FlowChangeFFI,
) -> i32,
pub get_rows: extern "C" fn(
instance: *mut c_void,
ctx: *mut FFIContext,
row_numbers: *const u64,
count: usize,
output: *mut RowsFFI,
) -> i32,
pub destroy: extern "C" fn(instance: *mut c_void),
}
#[repr(C)]
pub struct FFIOperatorDescriptor {
pub api: u32,
pub operator: BufferFFI,
pub version: BufferFFI,
pub description: BufferFFI,
pub input_columns: FFIOperatorColumnDefs,
pub output_columns: FFIOperatorColumnDefs,
pub capabilities: u32,
pub vtable: FFIOperatorVTable,
}
unsafe impl Send for FFIOperatorDescriptor {}
unsafe impl Sync for FFIOperatorDescriptor {}
pub type FFIOperatorCreateFn = extern "C" fn(config: *const u8, config_len: usize, operator_id: u64) -> *mut c_void;