On Saturday, 13 December 2014 at 19:03:42 UTC, aldanor wrote:
Let's say there's a "foo.d" that contains raw bindings to "foo.h" (enums, structs, extern variables, function declarations, a whole load of stuff) -- everything but the functions is already fine but all functions need to be wrapped.

If I now want to have exactly the same module but with all function declarations wrapped as described above, I have to public import it in another module and then do some template magic. However, it wouldn't be possible to retain the same function names since they've been imported to the namespace (it's then also not possible to extern them as private initially since then you won't be able to import/wrap them in a different module). Hence the idea of mixing the wrapping template in the initial .d header.

I guess another way would be to split each header into functions / non-functions part, and private import + wrap the first part and public import the second part into a D-ready module. It just sounds like a whole lot of boilerplate so I was hoping there would be some magic automated way of doing something similar (maybe creating a custom "import" template that "imports" non-functions via aliasing and wraps functions)...

I don't think there is an easy way to do this. foo.d contains all the converted C code. Then bar.d *privately* imports foo.d and adds exceptions. I would use bar.d to improve the interface to the library not mearly wrapping functions (even though that's essentially what is happening). foo.d is the C interface. bar.d is your new OOP API complete with exceptions.

Reply via email to