C callbacks?
BCS
ao at pathlink.com
Wed Mar 18 11:30:34 PDT 2009
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.
More information about the Digitalmars-d-learn
mailing list