File:  [LON-CAPA] / loncom / homework / caparesponse / capa.i
Revision 1.9: download - view: text, annotated - select for diffs
Mon Apr 29 02:59:19 2024 UTC (3 weeks, 3 days ago) by raeburn
Branches: MAIN
CVS tags: version_2_12_X, HEAD
- Fix typo in rev. 1.8

    1: %module capa
    2: %{
    3: #include "caparesponse.h"
    4: %}
    5: 
    6: %typemap(in) char** reterror (char* cvalue) {
    7:   SV* tempsv;
    8:   long unsigned int len;
    9:   if (!SvROK($input)) {
   10:     croak("expected a reference\n");
   11:   }
   12:   tempsv = SvRV($input);
   13:   if ((!SvPOK(tempsv))) {
   14:     croak("expected a double reference\n");
   15:   }
   16:   cvalue = SvPV(tempsv,len);
   17:   $1 = &cvalue;
   18: }
   19: 
   20: %typemap(argout) char ** reterror {
   21:   SV *tempsv;
   22:   tempsv = SvRV($arg);
   23:   if (($1!=NULL) && (*$1!=NULL)) {
   24:     sv_setpv(tempsv, *$1);
   25:     free(*$1);
   26:   }
   27: }
   28: 
   29: %typemap(in) double* scaled {
   30:   double *temp;
   31:   if (!SvROK($input)) {
   32:     croak("expected a reference\n");
   33:   }
   34:   SV* tempsv;
   35:   tempsv = SvRV($input);
   36:   if (!SvPOK(tempsv) && !SvIOK(tempsv) && !SvNOK(tempsv)) {
   37:     croak("expected a single reference to a scalar\n");
   38:   }
   39:   temp = malloc(sizeof(double));
   40:   *temp = SvNV(tempsv);
   41:   $1 = temp;
   42: }
   43: 
   44: %typemap(argout) double* scaled {
   45:   SV *tempsv;
   46:   tempsv = SvRV($arg);
   47:   sv_setnv(tempsv, *$1);
   48:   free($1);
   49: }
   50: 
   51: 
   52: extern int caparesponse_capa_check_answer(char *response,char *correct,
   53: 				   int type,int tol_type,double tolerance,
   54: 				   int sig_lbound,int sig_ubound, 
   55: 				   char *ans_fmt, char *unit_str,
   56: 				   int calc, char *id_list, char *pts_list,
   57: 				   char *rndseed, char** reterror);
   58: 
   59: extern int caparesponse_get_real_response(char* unit_str, char* answer,
   60: 					  double* scaled);

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