PSPP-Perl

 view release on metacpan or  search on metacpan

PSPP.xs  view on Meta::CPAN

      }
    else
      {
	scalar_to_value (case_data_rw (c, v), sv, v);
      }
 }

 /* The remaining variables must be sysmis or blank string */
 while (i < dict_get_var_cnt (sfi->dict))
 {
   const struct variable *v = vv[i++];
   union value *val = case_data_rw (c, v);
   value_set_missing (val, var_get_width (v));
 }
 RETVAL = casewriter_write (sfi->writer, c);
 finish:
 free (vv);
OUTPUT:
 RETVAL




MODULE = PSPP		PACKAGE = PSPP::Reader

struct sysreader_info *
pxs_open_sysfile (name)
 char * name
CODE:
 struct casereader *reader;
 struct sysreader_info *sri = NULL;
 struct file_handle *fh =
 	 fh_create_file (NULL, name, fh_default_properties () );

 sri = xmalloc (sizeof (*sri));
 sri->reader = sfm_open_reader (fh, &sri->dict, &sri->opts);

 if ( NULL == sri->reader)
 {
   free (sri);
   sri = NULL;
 }

 RETVAL = sri;
 OUTPUT:
RETVAL


struct dictionary *
pxs_get_dict (reader)
 struct sysreader_info *reader;
CODE:
 RETVAL = reader->dict;
 OUTPUT:
RETVAL


void
get_next_case (sfr)
 struct sysreader_info *sfr;
PPCODE:
 struct ccase *c;

 if (c = casereader_read (sfr->reader))
 {
  int v;

  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);

      PUSHs (sv_2mortal (value_to_scalar (val, var)));
    }

  case_unref (c);
 }



( run in 1.315 second using v1.01-cache-2.11-cpan-5511b514fd6 )