Automatic binding generation

Piotr Szturmaj bncrbme at jadamspam.pl
Fri Jan 6 12:34:07 PST 2012


Is should be possible to use debug info of a library to generate D or 
other language bindings. Current approaches are SWIG, htod and/or manual 
coding. The first two do not always work as expected (try using them to 
make OpenCV bindings) as parser-based converters do not always support 
all build environment details. Often, you need a fully capable C/C++ 
compiler to correctly parse headers.

Function information may be extracted from:

* PDB files using DIA SDK on Windows
* DWARF info using libdwarf or libdw on *nixes

Debug files contain information about functions, their argument types 
and return types, about structs and classes/namespaces (C++). Recent 
version of DWARF may even contain information about macros.

The usual binding creation would be simple:

1. build library using existing build environment with debug info
2. run converter to generate D bindings (this may be used to make C#'s 
bindings as well)

Thanks to the 1st point we can avoid many incompatibilities with 
SWIG/htod parsers as we get all symbols in one file. The whole process 
may be automated in most circumstances. Eventually some fixup files may 
be used to assist with conversion (similar to SWIG files, but without 
enumerating everything).

Thoughts?


More information about the Digitalmars-d mailing list