On 04/10/2016 1:08 AM, Chalix wrote:
Hi All!

The documentation of D (https://dlang.org/overview.html#compatibility)
says:

"Direct Access to C API's

Not only does D have data types that correspond to C types, it provides
direct access to C functions. There is no need to write wrapper
functions, parameter swizzlers, nor code to copy aggregate members one
by one."


So, if there is no need for wrapper functions, why are there a lot of
them? For example, GTK+ is a C library, with C-include files. Now there
exists the GtkD (http://gtkd.org/) library, which describes itself as a
wrapper of GTK+. GtkD contains the .d files (which I need for import, of
course) and a seperate library (libgtkd-3.so).
If D has direct Access to C API's, why do we need this the gtkd-3 lib,
and not just use the gtk-3 lib?

Furthermore, if there is an not very popular C library, where no wrapper
function exists, would it possible to include it into a D project?
Probably I have to transform all the .h to .d files, so i can "import"
them instead of "include" them. But then, could I link against the
C-library?


I did not understand the concept of interaction between C and D, and I
am a bit confused about wrapper functions and bindings for D now...
Would be great if someone could make it a bit more clear to me :)

Ok lets get a few things straight.

To use any kind of function you must declare it, plain and simple.
Any c or c++ function/class is the very much same way.
Now C++ types such as classes are highly limited in D since it doesn't ugh cross over all that well (it does some weird things).

These kinds of declarations are called bindings. We must have them since the D compilers don't support reading header files. Why don't they "just" support them you ask? Well simple, that's a whole new frontend that we must support... Walter is quite opposed to the idea and rightly so.

So the real interesting question, why do we have wrappers around e.g. c++ libs? Simple, the original C++ code was designed for C++ and we can simply do those interfaces better.

---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

Reply via email to