Raw FFI bindings to IDA's idalib runtime and the idakit C++ facade.
The declarations are split into per-domain source modules (runtime, function, bytes,
hexrays, ...) that mirror the facade's translation units, but every item is re-exported
flat at the crate root, so the public surface is a single namespace
(idakit_sys::idakit_get_bytes, idakit_sys::EmitVtbl), not a module hierarchy. There are
no safe wrappers here; those belong in idakit.
Buffer conventions
Functions that accept (*mut c_char, cap: usize) copy the value into the
caller-supplied buffer and NUL-terminate within cap bytes. The return value
is the full source length, which may exceed cap when the output was
truncated. A negative return value means the query failed (missing symbol,
null handle, etc.).
Owned handles
idakit_binpat_compile returns an opaque *mut c_void handle owned by the caller,
released with its matching idakit_binpat_free. Passing a handle to any other function
after release is undefined behaviour.