Crate interoptopus_backend_cpython_cffi[−][src]
Expand description
Generates CPython CFFI bindings for Interoptopus.
Usage
In your library or a support project add this:
use my_crate::ffi_inventory; #[test] fn generate_python_bindings() { use interoptopus::Interop; use interoptopus_backend_cpython_cffi::{Generator, PythonWriter, Config}; // Converts an `ffi_inventory()` into Python interop definitions. Generator::new(Config::default(), ffi_inventory()).write_to("module.py") }
And we might produce something like this:
from cffi import FFI
api_definition = """
typedef struct Vec3f32
{
float x;
float y;
float z;
} Vec2f32;
Vec3f32 my_game_function(Vec3f32* input);
"""
ffi = FFI()
ffi.cdef(api_definition)
_api = None
def init_api(dll):
"""Initializes this library, call with path to DLL."""
global _api
_api = ffi.dlopen(dll)
class raw:
"""Raw access to all exported functions."""
def my_game_function(input):
global _api
return _api.my_game_function(input)
Structs
Configures Python code generation.
Implements PythonTypeConverter
.
Start here, main converter implementing Interop
.
Traits
Converts Interoptopus types to Python types.
Writes the Python file format, impl
this trait to customize output.