binding tool for C libs
Denis Shelomovskij
verylonglogin.reg at gmail.com
Sun Jan 22 10:03:08 PST 2012
21.01.2012 19:24, Gour пишет:
> Hello!
>
> We have a need to bind smaller to medium-size C library and would like
> to provide more D-ish or higher-level bindings than just wrapper over C
> code.
>
> E.g. the C function looks like:
>
> int swe_calc_ut ( double tjd_ut, int ipl, int iflag, double* xx, char* serr)
>
> and we would like to e.g. use exception to handle errors instead of
> checking return value and fill 'char* serr' or store the result of
> 6-field 'double* xx' array in some data structure etc.
>
> Afaics, htod is more suitable for just wrapping C code, so I wonder if
> there is something else you can recommend besides SWIG?
>
>
> Sincerely,
> Gour
>
I'm finishing a fast (I just don't see a faster way) and garbage-free
CTFE-capable wrapper. But it requires IDL to be written for every C
function.
It already performs C-arrays (with length or end element) to D arrays
conversion and UTF-8/16/32 conversion (usable for WinAPI *W functions).
It will soon wrap functions like `GetCurrentDirectoryW` where it will
call C function twice (if it will not guess with buffer size at first time).
Sources: https://bitbucket.org/denis_sh/cwrap/src
Docs (just a draft): http://deoma-cmd.ru/d/docs/src/cwrap.html
For easy understanding of how does it work look at `examples/c.d` - this
is a bunch of test C sources. D sources obtained from it are in `out`
directory.
More information about the Digitalmars-d
mailing list