src/inter_cb.c - Parrot Interpreter - Callback Function Handling


NCI callback functions may run whenever the C code executes the callback. To be prepared for asynchronous callbacks these are converted to callback events.

Often callbacks should run synchronously. This can only happen when the C-library calls the callback, because Parrot called a function in the C-library.

Functions ^

PMC *Parrot_make_cb(Parrot_Interp interp, PMC *sub, PMC *user STRING *cb_signature)

Create a callback function according to pdd16.

static void verify_CD(void *external_data, PMC *user_data)

Verify user_data PMC then continue with callback_CD

static void callback_CD(Parrot_Interp, void *external_data, PMC *user_data)

Common callback function handler. See pdd16.

void Parrot_run_callback(Parrot_Interp interp, PMC *user_data, void *external_data)

Run a callback function. The PMC* user_data holds all necessary items in its properties.

void Parrot_callback_C(void *external_data, PMC *user_data)

void Parrot_callback_D(PMC *user_data, void *external_data)

NCI callback functions. See pdd16.


include/parrot/interpreter.h, docs/pdds/pdd16_native_call.pod.