rust-bindgen
rust-bindgen copied to clipboard
add option to map specific C type to Rust type
when bindgen (0.59.2) translate this to Rust
typedef void (* C4NULLABLE C4LogCallback)(C4LogDomain, C4LogLevel, const char *fmt, va_list args);
void c4log_writeToCallback(C4LogLevel level, C4LogCallback callback, bool preformatted) C4API;
I got this type for C4LogCallback.
unsafe extern "C" fn(_, C4LogLevel, _, *mut __va_list_tag)
I want replace the last argument *mut __va_list_tag with VaList from va_list crate.
I also I have similar problem when I convert bitmap.h from Android Sdk.
This header include jni.h and so:
int32_t AndroidBitmap_getDataSpace(JNIEnv* env, jobject jbitmap)
uses generated by bindgen Rust type JNIEnv defined in jni.h,
but at the same time I use jni crate where this type defined,
so I want map C type JNIEnv to jni::JNIEnv.
For the JNIEnv case it's easy, blocklist the JNIEnv type and add a raw use jni::JNIEnv;, we do that pretty extensively.
The *mut __va_list_tag needs some more thought probably.