case: Introduce new functions for numbers and substrings in cases.
[pspp] / src / language / data-io / matrix-reader.c
index 1dfe638882ced9bfc9f5335e58089be2967a54c2..a7db15e029d8b9feac1d9111a8297edb87c6540b 100644 (file)
@@ -138,7 +138,7 @@ create_matrix_reader_from_case_reader (const struct dictionary *dict, struct cas
   if (vars)
     {
       int i;
-      *vars = xcalloc (sizeof (struct variable **), *n_vars);
+      *vars = xcalloc (*n_vars, sizeof (struct variable **));
 
       for (i = 0; i < *n_vars; ++i)
        {
@@ -182,7 +182,7 @@ matrix_fill_row (gsl_matrix **matrix,
   for (col = 0; col < n_vars; ++col)
     {
       const struct variable *cv = vars [col];
-      double x = case_data (c, cv)->f;
+      double x = case_num (c, cv);
       assert (col  < (*matrix)->size2);
       assert (mrow < (*matrix)->size1);
       gsl_matrix_set (*matrix, mrow, col, x);
@@ -213,7 +213,7 @@ next_matrix_from_reader (struct matrix_material *mm,
   mm->mean_matrix = mr->mean_vectors;
   mm->var_matrix = mr->var_vectors;
 
-  struct substring *var_names = xcalloc (n_vars, sizeof *var_names);
+  struct substring *var_names = XCALLOC (n_vars,  struct substring);
   for (int i = 0; i < n_vars; ++i)
     {
       ss_alloc_substring (var_names + i, ss_cstr (var_get_name (vars[i])));
@@ -245,9 +245,9 @@ next_matrix_from_reader (struct matrix_material *mm,
       const union value *uvv  = case_data (c, mr->varname);
       int w = var_get_width (mr->varname);
 
-      struct fmt_spec fmt = {FMT_A, 0, 0};
+      struct fmt_spec fmt = { .type = FMT_A };
       fmt.w = w;
-      char *vname = data_out (uvv, enc, &fmt);
+      char *vname = data_out (uvv, enc, &fmt, settings_get_fmt_settings ());
       struct substring the_name = ss_cstr (vname);
 
       int mrow = -1;