From D struct to C struct

Namespace rswhite4 at googlemail.com
Sun Nov 17 14:11:00 PST 2013


Hello.
I have some trouble with C interfacing.
I have a C struct with an integer member and I want to wrap this 
into a D template. But if I want to access the C API, I have to 
convert the C struct with the type informations of the D struct.
Example: http://dpaste.dzfl.pl/e3d10755

The question is: How can I write the ptr method? It is very 
probable, that these conversion is often used, so the ptr method 
should be fast and without many garbage. And If possible, I want 
to avoid the GC / Heap.
My current approach doesn't avoid the GC complete, but it 
displace the problem: http://dpaste.dzfl.pl/449f663f

Any further ideas how to solve that?

And yes I want to solve the whole conversion in the ptr method 
and don't want to write something like that all the time:
----
void foo(ref const Df df) {
     C c = C(cast(int) df.id);
     c_method(&c);
}
----

or

----
void foo(ref const Df df) {
     C c = df.asC();
     c_method(&c);
}
----

Thanks in advance. :)


More information about the Digitalmars-d-learn mailing list