%module capa %{ %} %typemap(perl5,in) char** reterror (char** cvalue) { SV* tempsv; if (!SvROK($source)) { croak("expected a reference\n"); } tempsv = SvRV($source); if ((!SvPOK(tempsv))) { croak("expected a double reference\n"); } int len; char *temp=SvPV(tempsv,len); cvalue = &temp; $target = cvalue; } %typemap(perl5,argout) char ** reterror { SV *tempsv; tempsv = SvRV($arg); if (($source!=NULL) && (*$source!=NULL)) { sv_setpv(tempsv, *$source); free(*$source); } } extern int caparesponse_capa_check_answer(char *response,char *correct, int type,int tol_type,double tolerance, int sig_lbound,int sig_ubound, char *ans_fmt, char *unit_str, int calc, char *id_list, char *pts_list, char *rndseed, char** reterror);