Check out [nimterop](https://github.com/nimterop/nimterop) which aims to make 
it easier to create bindings. It uses `gcc -E` to tackle the preprocessor and 
[tree-sitter](https://github.com/tree-sitter/tree-sitter) to parse and generate 
an AST. The AST is then converted into Nim syntax.

We aren't far enough to make it absolutely seamless but 
[here's](http://ix.io/1Itr/nim) a nimterop based LLVM wrapper that generates 
[this](http://ix.io/1Itq/nim) output. There are still some C features that 
aren't yet supported but instead of erroring out, nimterop simply ignores 
unrecognized syntax.

nimterop doesn't yet support C++ but can leverage c2nim in this case. 
[Here's](https://github.com/genotrance/feud/blob/master/wrappers/fuzzy.nim) an 
example C++ binding. However, advanced C++ is still beyond.

Reply via email to