--- loncom/homework/caparesponse/capa.i 2004/03/22 01:43:28 1.5 +++ loncom/homework/caparesponse/capa.i 2004/11/16 23:37:40 1.6 @@ -25,9 +25,36 @@ free(*$source); } } + +%typemap(perl5,in) double* scaled { + double *temp; + if (!SvROK($source)) { + croak("expected a reference\n"); + } + SV* tempsv; + tempsv = SvRV($source); + if (!SvPOK(tempsv) && !SvIOK(tempsv) && !SvNOK(tempsv)) { + croak("expected a single reference to a scalar\n"); + } + temp = malloc(sizeof(double)); + *temp = SvNV(tempsv); + $target = temp; +} + +%typemap(perl5,argout) double* scaled { + SV *tempsv; + tempsv = SvRV($arg); + sv_setnv(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); + +extern int caparesponse_get_real_response(char* unit_str, char* answer, + double* scaled);