Hey Nathan! This has helped me a lot!
Thanks. On Tue, Jul 14, 2015 at 2:23 AM, Nathan Rajlich <[email protected]> wrote: > Currently the best place for examples of ffi.Function usage would be in > the test files: > https://github.com/node-ffi/node-ffi/blob/master/test/function.js#L31-L42 > > As for your case: > > 1) I believe that you need to just use "void" rather than > ref.refType(ref.types.void) for the logFunctionPtr return value, since it > looks like the C declaration is defined that way. > 2) When invoking context_set_logfunc(), you pass the JS function directly > where the `logfunc` argument goes. So probably something like: > > myLib.context_set_logfunc(context.ref(), function(context, loglevel, > file, line, fn, message, userData) { > // do something with the arguments! > }, null); > > Hope that helps. Cheers! > > On Mon, Jul 13, 2015 at 12:30 PM, Christian Guimaraes < > [email protected]> wrote: > >> Hi! >> >> I'm trying to wrap a C library using node-ffi and I have some doubts >> regarding function pointers. >> >> The C library has a following callback function: >> >> // typedef void (*logfunc_t) (context_t *context, loglevel_t loglevel, >> const char *file, unsigned int line, const char *function, const char >> *message, void *userdata); >> var logFunctionPtr = ffi.Function( ref.refType(ref.types.void), [ >> contextTPtr, "int", "string", "int", "string", "string", >> ref.refType(ref.types.void) ]); >> >> And below the FFI definition that I did: >> >> var myLib = ffi.Library("mylib", { >> // dc_status_t -> type int >> // dc_status_t context_set_logfunc (context_t *context, logfunc_t >> logfunc, void *userdata); >> "context_set_logfunc": [ "int", [ contextTPtr, logFunctionPtr, >> ref.refType(ref.types.void) ] ] >> }); >> >> 1. Is it the code above ok? >> >> 2. How should I pass the callback (as parameter, in red) to the function >> call? I'm trying this: >> >> myLib.context_set_logfunc(context.ref(), ref.alloc(logFunctionPtr), >> null); >> >> I'm having trouble trying to find some node-ffi examples where/how a >> callback function is defined and used? >> >> Thanks. >> >> -- >> Christian GuimarĂ£es >> >> >> -- >> Job board: http://jobs.nodejs.org/ >> New group rules: >> https://gist.github.com/othiym23/9886289#file-moderation-policy-md >> Old group rules: >> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >> --- >> You received this message because you are subscribed to the Google Groups >> "nodejs" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/nodejs/b2181056-1089-49be-838f-3bfef504235b%40googlegroups.com >> <https://groups.google.com/d/msgid/nodejs/b2181056-1089-49be-838f-3bfef504235b%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > -- > Job board: http://jobs.nodejs.org/ > New group rules: > https://gist.github.com/othiym23/9886289#file-moderation-policy-md > Old group rules: > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines > --- > You received this message because you are subscribed to the Google Groups > "nodejs" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/nodejs/CAN5MXoeSRy-JYGwSN_J_ShAfZp%2BqwKcAuorksFXp-fMXsZg8XA%40mail.gmail.com > <https://groups.google.com/d/msgid/nodejs/CAN5MXoeSRy-JYGwSN_J_ShAfZp%2BqwKcAuorksFXp-fMXsZg8XA%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- Job board: http://jobs.nodejs.org/ New group rules: https://gist.github.com/othiym23/9886289#file-moderation-policy-md Old group rules: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/nodejs/CAKUBXfRLg7Q8hhS-X-K6X7a8LfPuZDyBoR5o5yO6%2BBXL8j60og%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
