Skip to main content

pio_to_arrow

Function pio_to_arrow 

Source
#[unsafe(no_mangle)]
pub unsafe extern "C" fn pio_to_arrow( net: *const PioNetwork, table: i32, out_array: *mut FFI_ArrowArray, out_schema: *mut FFI_ArrowSchema, errbuf: *mut c_char, errlen: usize, ) -> i32
Expand description

Export one network table over the Arrow C Data Interface: the to_ conversion whose output type is Arrow structs rather than a string, and the bulk plane this ABI evolves on. Tables 0..5 are raw network tables; tables 6 and up are normalized solver tables with per unit/radian values and dense zero based row ids. New or richer columns arrive in the Arrow schema, leaving the C signatures fixed.

table is one of the PIO_ARROW_TABLE_* selectors. Raw table columns use EXTERNAL bus ids (the pio_bus_ids id space), not the gridfm schema. On success (returns 0), out_array and out_schema are populated with owned C Data Interface structs: ownership of the Arrow buffers transfers to the caller, both release callbacks are non-NULL, and the caller MUST invoke each exactly once when done (skipping one leaks; the structs outlive pio_network_free). On error (returns -1) the message is written into errbuf and the out-params are left untouched. Only built with the arrow cargo feature.