Rewrite and improve formatted output routines.
[pspp-builds.git] / src / language / data-io / list.q
index 8bb55106e96554e10f78321f5376336275b101ea..d8256e32d25c504342262e928035d59bbe0cf4d8 100644 (file)
@@ -26,6 +26,7 @@
 #include "size_max.h"
 #include <data/case.h>
 #include <data/dictionary.h>
+#include <data/data-out.h>
 #include <data/format.h>
 #include <data/procedure.h>
 #include <data/variable.h>
@@ -213,9 +214,9 @@ cmd_list (struct dataset *ds)
       strcpy (casenum_var.name, "Case#");
       casenum_var.type = NUMERIC;
       casenum_var.fv = -1;
-      casenum_var.print = make_output_format (FMT_F,
-                                              (cmd.last == LONG_MAX
-                                               ? 5 : intlog10 (cmd.last)), 0);
+      casenum_var.print = fmt_for_output (FMT_F,
+                                          (cmd.last == LONG_MAX
+                                           ? 5 : intlog10 (cmd.last)), 0);
 
       /* Add the weight variable at the beginning of the variable list. */
       cmd.n_variables++;
@@ -664,17 +665,17 @@ list_cases (const struct ccase *c, void *aux UNUSED, const struct dataset *ds UN
                ds_put_char_multiple(&line_buffer, ' ', width - v->print.w);
              }
 
-            if ((formats[v->print.type].cat & FCAT_STRING) || v->fv != -1)
+            if (fmt_is_string (v->print.type) || v->fv != -1)
              {
-                data_out (ds_put_uninit(&line_buffer, v->print.w),
-                         &v->print, case_data (c, v->fv));
+                data_out (case_data (c, v->fv), &v->print,
+                          ds_put_uninit (&line_buffer, v->print.w));
              }
             else 
               {
                 union value case_idx_value;
                 case_idx_value.f = case_idx;
-                data_out (ds_put_uninit(&line_buffer,v->print.w), 
-                         &v->print,   &case_idx_value); 
+                data_out (&case_idx_value, &v->print,
+                          ds_put_uninit (&line_buffer,v->print.w)); 
               }
 
            ds_put_char(&line_buffer, ' ');
@@ -701,13 +702,13 @@ list_cases (const struct ccase *c, void *aux UNUSED, const struct dataset *ds UN
            struct variable *v = cmd.v_variables[column];
            char buf[256];
            
-            if ((formats[v->print.type].cat & FCAT_STRING) || v->fv != -1)
-             data_out (buf, &v->print, case_data (c, v->fv));
+            if (fmt_is_string (v->print.type) || v->fv != -1)
+             data_out (case_data (c, v->fv), &v->print, buf);
             else 
               {
                 union value case_idx_value;
                 case_idx_value.f = case_idx;
-                data_out (buf, &v->print, &case_idx_value); 
+                data_out (&case_idx_value, &v->print, buf);
               }
 
             fputs ("    <TD>", x->file);