You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In working on emscripten-sys, I have a scenario where #define macros are being used as type aliases, which I would like to translate to Rust.
Since I don't think this is a very common pattern, if you don't wish to merge this upstream, I think it could be resolved by somehow allowing the callee to specify custom behavior via ParseCallbacks for macros that bindgen doesn't know how to handle.
Input C/C++ Header
types.h:
#defineEMSCRIPTEN_RESULTint
Bindgen Invocation
fnmain(){let builder = bindgen::builder().header("types.h");
builder
.generate().expect("failed to generate rust bindings").write(Box::new(std::io::stdout())).expect("failed to write to file");}
Actual Results
No bindings are generated.
Expected Results
pubtypeEMSCRIPTEN_RESULT = c_int;
The text was updated successfully, but these errors were encountered:
agausmann
changed the title
Custom macro parsing in special use cases
Define macro type aliases / Custom macro parsing in special use cases
Mar 23, 2020
Yeah the problem with doing this automatically is that you literally can't. C macros are pretty bad at this kind of thing... Maybe we should add a macro which would generate arbitrary code? But then I guess that users of that macro would use c_int instead of EMSCRIPTEN_RESULT...
Yes, for arbitrary types it's pretty much impossible, but if it were limited to primitives (those in std::os::raw, plus pointers maybe), or if it were implemented by users themselves who have full knowledge of the library, it would be possible.
In working on
emscripten-sys
, I have a scenario where#define
macros are being used as type aliases, which I would like to translate to Rust.Since I don't think this is a very common pattern, if you don't wish to merge this upstream, I think it could be resolved by somehow allowing the callee to specify custom behavior via
ParseCallbacks
for macros thatbindgen
doesn't know how to handle.Input C/C++ Header
types.h:
Bindgen Invocation
Actual Results
No bindings are generated.
Expected Results
The text was updated successfully, but these errors were encountered: