Diff for /loncom/homework/caparesponse/capa.i between versions 1.5 and 1.9

version 1.5, 2004/03/22 01:43:28 version 1.9, 2024/04/29 02:59:19
Line 1 Line 1
 %module capa  %module capa
 %{  %{
   #include "caparesponse.h"
 %}  %}
   
 %typemap(perl5,in) char** reterror (char* cvalue) {  %typemap(in) char** reterror (char* cvalue) {
   SV* tempsv;    SV* tempsv;
   int len;    long unsigned int len;
   if (!SvROK($source)) {    if (!SvROK($input)) {
     croak("expected a reference\n");      croak("expected a reference\n");
   }    }
   tempsv = SvRV($source);    tempsv = SvRV($input);
   if ((!SvPOK(tempsv))) {    if ((!SvPOK(tempsv))) {
     croak("expected a double reference\n");      croak("expected a double reference\n");
   }    }
   cvalue = SvPV(tempsv,len);    cvalue = SvPV(tempsv,len);
   $target = &cvalue;    $1 = &cvalue;
 }  }
   
 %typemap(perl5,argout) char ** reterror {  %typemap(argout) char ** reterror {
   SV *tempsv;    SV *tempsv;
   tempsv = SvRV($arg);    tempsv = SvRV($arg);
   if (($source!=NULL) && (*$source!=NULL)) {    if (($1!=NULL) && (*$1!=NULL)) {
     sv_setpv(tempsv, *$source);      sv_setpv(tempsv, *$1);
     free(*$source);      free(*$1);
     }
   }
   
   %typemap(in) double* scaled {
     double *temp;
     if (!SvROK($input)) {
       croak("expected a reference\n");
     }
     SV* tempsv;
     tempsv = SvRV($input);
     if (!SvPOK(tempsv) && !SvIOK(tempsv) && !SvNOK(tempsv)) {
       croak("expected a single reference to a scalar\n");
   }    }
     temp = malloc(sizeof(double));
     *temp = SvNV(tempsv);
     $1 = temp;
 }  }
   
   %typemap(argout) double* scaled {
     SV *tempsv;
     tempsv = SvRV($arg);
     sv_setnv(tempsv, *$1);
     free($1);
   }
   
   
 extern int caparesponse_capa_check_answer(char *response,char *correct,  extern int caparesponse_capa_check_answer(char *response,char *correct,
    int type,int tol_type,double tolerance,     int type,int tol_type,double tolerance,
    int sig_lbound,int sig_ubound,      int sig_lbound,int sig_ubound, 
    char *ans_fmt, char *unit_str,     char *ans_fmt, char *unit_str,
    int calc, char *id_list, char *pts_list,     int calc, char *id_list, char *pts_list,
    char *rndseed, char** reterror);     char *rndseed, char** reterror);
   
   extern int caparesponse_get_real_response(char* unit_str, char* answer,
     double* scaled);

Removed from v.1.5  
changed lines
  Added in v.1.9


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>