#include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "ppport.h" # define PERL_NO_GET_CONTEXT int runCallback(CV* callback_ref, const char* param) { int count; int answer; dSP; ENTER; SAVETMPS; PUSHMARK(SP); XPUSHs(sv_2mortal(newSVpv(param, 0))); PUTBACK; count = call_sv((SV*)callback_ref, G_SCALAR); SPAGAIN; if (count != 1) croak("Uncknown return value format. Returned %d params instid 1", count); answer = POPi; FREETMPS; LEAVE; return answer; } MODULE = Callback PACKAGE = Callback void runCallback(callback_ref, param) CV* callback_ref; const char* param; PROTOTYPE: $$ PPCODE: XPUSHs(sv_2mortal( newSViv(runCallback(callback_ref, param)) ));