File:  [LON-CAPA] / loncom / homework / caparesponse / capa.i
Revision 1.6: download - view: text, annotated - select for diffs
Tue Nov 16 23:37:40 2004 UTC (19 years, 5 months ago) by albertel
Branches: MAIN
CVS tags: version_2_9_X, version_2_9_99_0, version_2_9_1, version_2_9_0, version_2_8_X, version_2_8_99_1, version_2_8_99_0, version_2_8_2, version_2_8_1, version_2_8_0, version_2_7_X, version_2_7_99_1, version_2_7_99_0, version_2_7_1, version_2_7_0, version_2_6_X, version_2_6_99_1, version_2_6_99_0, version_2_6_3, version_2_6_2, version_2_6_1, version_2_6_0, version_2_5_X, version_2_5_99_1, version_2_5_99_0, version_2_5_2, version_2_5_1, version_2_5_0, version_2_4_X, version_2_4_99_0, version_2_4_2, version_2_4_1, version_2_4_0, version_2_3_X, version_2_3_99_0, version_2_3_2, version_2_3_1, version_2_3_0, version_2_2_X, version_2_2_99_1, version_2_2_99_0, version_2_2_2, version_2_2_1, version_2_2_0, version_2_1_X, version_2_1_99_3, version_2_1_99_2, version_2_1_99_1, version_2_1_99_0, version_2_1_3, version_2_1_2, version_2_1_1, version_2_1_0, version_2_12_X, version_2_11_X, version_2_11_4_uiuc, version_2_11_4_msu, version_2_11_4, version_2_11_3_uiuc, version_2_11_3_msu, version_2_11_3, version_2_11_2_uiuc, version_2_11_2_msu, version_2_11_2_educog, version_2_11_2, version_2_11_1, version_2_11_0_RC3, version_2_11_0_RC2, version_2_11_0_RC1, version_2_11_0, version_2_10_X, version_2_10_1, version_2_10_0_RC2, version_2_10_0_RC1, version_2_10_0, version_2_0_X, version_2_0_99_1, version_2_0_2, version_2_0_1, version_2_0_0, version_1_99_3, version_1_99_2, version_1_99_1_tmcc, version_1_99_1, version_1_99_0_tmcc, version_1_99_0, version_1_3_X, version_1_3_3, version_1_3_2, version_1_3_1, version_1_3_0, version_1_2_99_1, version_1_2_99_0, loncapaMITrelate_1, language_hyphenation_merge, language_hyphenation, bz6209-base, bz6209, bz5969, bz2851, PRINT_INCOMPLETE_base, PRINT_INCOMPLETE, HEAD, GCI_3, GCI_2, GCI_1, BZ5971-printing-apage, BZ5434-fox, BZ4492-merge, BZ4492-feature_horizontal_radioresponse, BZ4492-feature_Support_horizontal_radioresponse, BZ4492-Support_horizontal_radioresponse
- BUG#2826 $result=capa::caparesponse_get_real_response($correct_unit,$student_answer,\$scaled_answer);
        - given a unit, and a student answer, $scaled_answer will be set to the floating point number that is what capa would use to compare to the 'correct answer'
        - $result is an interger return code check capaCommon.h for possible values

%module capa
%{

%}

%typemap(perl5,in) char** reterror (char* cvalue) {
  SV* tempsv;
  int len;
  if (!SvROK($source)) {
    croak("expected a reference\n");
  }
  tempsv = SvRV($source);
  if ((!SvPOK(tempsv))) {
    croak("expected a double reference\n");
  }
  cvalue = SvPV(tempsv,len);
  $target = &cvalue;
}

%typemap(perl5,argout) char ** reterror {
  SV *tempsv;
  tempsv = SvRV($arg);
  if (($source!=NULL) && (*$source!=NULL)) {
    sv_setpv(tempsv, *$source);
    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);

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