Why using wrappers for D?

cym13 via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Oct 3 05:35:40 PDT 2016


On Monday, 3 October 2016 at 12:08:54 UTC, 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 
> :)

D provides ways to do things that C or C++ don't provide 
(otherwise we wouldn't be using it). C/C++ functions and 
structures are designed to fit well in C/C++, not in D. To make 
them easy to use and avoid code of mixed style we build up a 
facade : the wrapper. That's all.


More information about the Digitalmars-d-learn mailing list