3 releases
0.1.2 | Dec 17, 2019 |
---|---|
0.1.1 | Dec 17, 2019 |
0.1.0 | Dec 17, 2019 |
#287 in FFI
20KB
430 lines
Foreignc
Foreignc is a framework for auto generating a safe ffi abi for rust methods. The main advantage if foreignc is that allows for easy deplayment and maintenance of safe ffi abi. The crate is made up of two parts.
- Macros for auto generating ffi abis and cleanup methods
- Functions for auto generate the recieving end of the ffi abi
- Currently only python is supported
Templating
Using the feature 'template' it is possible to auto generate the recieving side of the ffi. This will also add two new functions get_package_dir and get_parsed_dir. Both functions return a representation of the current ffi api
Default types
Primititve types
The following primitive types are supported:
- bool
- ()
- i8, i16, i32, i64
- u8, u16, u32, u64
- f32, f64
- &str (will be converted to a CString)
Other types
The following other types are soppurted:
- Result (will be converted to a CResult)
- Option (will be converted to a COption)
- String (will be converted to a CString)
Custom Structs
Custom types can be implemented either by using the IntoFFi, FromFFi trait or the Boxed, Json macro.
Safety
As a rule of thumb, all allocated memory needs too be unallocated by the creator. This is also the basis for generate_free_methods that creates frunctions for freeing memory allocated by structures made by foreignc The following functions are made
- free_string(ptr: *mut CString)
- free_coption(ptr: *mut COption)
- free_cresult(ptr: *mut CResult)
Boxed structs will auto generate a free method using the following convention free_{to_snake_case(struct name)}
For more information see the ![git repository]
Dependencies
~1.2–8MB
~79K SLoC