X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=perl-module%2FPSPP.xs;h=237ae95f541a9564829ff93bff2ce33d8fcb2314;hb=db1b228d7481ccc58077c420887285cff2d08b91;hp=2d2c8d9d2456cb74f6bd4daab75aadc59e00ac14;hpb=3b31ddc1183fe78119fe7c8d9f8a19204fb23aea;p=pspp-builds.git diff --git a/perl-module/PSPP.xs b/perl-module/PSPP.xs index 2d2c8d9d..237ae95f 100644 --- a/perl-module/PSPP.xs +++ b/perl-module/PSPP.xs @@ -671,32 +671,24 @@ CODE: RETVAL -SV * +void get_next_case (sfr) struct sysreader_info *sfr; -CODE: +PPCODE: struct ccase *c; - if (! (c = casereader_read (sfr->reader))) - { - RETVAL = 0; - } - else + if (c = casereader_read (sfr->reader)) { int v; - AV *av_case = (AV *) sv_2mortal ((SV *) newAV()); + EXTEND (SP, dict_get_var_cnt (sfr->dict)); for (v = 0; v < dict_get_var_cnt (sfr->dict); ++v ) { const struct variable *var = dict_get_var (sfr->dict, v); const union value *val = case_data (c, var); - av_push (av_case, value_to_scalar (val, var)); + PUSHs (sv_2mortal (value_to_scalar (val, var))); } case_unref (c); - RETVAL = newRV ((SV *) av_case); } -OUTPUT: - RETVAL -