Reply to Chris,

I've hit another snag on my C library interfacing.  The .h defines a
function:

//typedef bool (*TCOD_bsp_callback_t)(TCOD_bsp_t *node, void *userData);

In C read this as: pointer to function taking ... (stuff) and returning bool

in D the more normal way to write that would be:

typedef bool function(bsp_t* node, void* userData) TCOD_bsp_callback_t;

if you are passing this to C code you will need an exter(C) in there somewhere.

bool* bsp_callback_t(bsp_t* node, void* userData); //bsp_t is a struct
defining the bsp tree

Sidenote: Did I translate that right?


Try it, test it, beat the snot out of it. If it works it's likely correct.

Anyway, this function is later passed into various functions, like:

bool bsp_traverse_pre_order(bsp_t *node, bsp_callback_t listener, void
*userData);

I've tried doing some reading on this board regarding c callbacks and
delegates, but it feels a bit over my head.  Can anyone assist me in
figuring out how to D-ify this bit of code so I can interact with the
C dll?


C code and delegates are incomparable but C and function pointers are not.


Reply via email to