xxxxxxxxxx
alias Callback = extern(C) int function(const(void)* a, void* b, uint c, void* context);
class C
{
int field = 43;
extern(C) int foo(void* b, uint c, C this_)
{
//writeln(a, " ", b, " ", c, " ", this_.field);
return 0;
}
extern(C) static int bar(void* a, void* b, uint c, void* context)
{
//writeln(a, " ", b, " ", c, " ", this_.field);
return 0;
}
}
void main()
{
void* a = new int;
void* b = new int;
uint c = 42;
auto obj = new C;
Callback cb = cast(Callback) (&obj.foo).funcptr;
cb(a, b, c, cast(void*) obj);
//writeln(a, " ", b, " ", c, " ", obj.field);
/* For comparison. Should print the same. */
}