Delete tab_raw function and tab_alloc macro.
authorBen Pfaff <blp@gnu.org>
Tue, 11 Aug 2009 05:38:21 +0000 (22:38 -0700)
committerBen Pfaff <blp@gnu.org>
Tue, 11 Aug 2009 05:38:21 +0000 (22:38 -0700)
This function and macro were only used within crosstabs.q.  They violate
encapsulation (though not too badly) and since it is not difficult to
remove them, this commit does so.

src/language/stats/crosstabs.q
src/output/table.c
src/output/table.h

index ad278eebc0adf0387bca3667e807503581a7567b..7db55a2c24b2278072acad0fb26d00482a3db24b 100644 (file)
@@ -1526,27 +1526,22 @@ table_value_missing (struct crosstabs_proc *proc,
                      struct tab_table *table, int c, int r, unsigned char opt,
                     const union value *v, const struct variable *var)
 {
-  struct substring s;
-  const struct fmt_spec *print = var_get_print_format (var);
-
   const char *label = var_lookup_value_label (var, v);
-  if (label)
-    {
-      tab_text (table, c, r, TAB_LEFT, label);
-      return;
-    }
-
-  s.string = tab_alloc (table, print->w);
-  data_out (v, print, s.string);
-  s.length = print->w;
-  if (proc->exclude == MV_NEVER && var_is_num_missing (var, v->f, MV_USER))
-    s.string[s.length++] = 'M';
-  while (s.length && *s.string == ' ')
+  if (label != NULL)
+    tab_text (table, c, r, TAB_LEFT, label);
+  else
     {
-      s.length--;
-      s.string++;
+      const struct fmt_spec *print = var_get_print_format (var);
+      if (proc->exclude == MV_NEVER && var_is_value_missing (var, v, MV_USER))
+        {
+          char *s = xmalloc (print->w + 2);
+          strcpy (&s[print->w], "M");
+          tab_text (table, c, r, opt, s + strspn (s, " "));
+          free (s);
+        }
+      else
+        tab_value (table, c, r, opt, v, print);
     }
-  tab_raw (table, c, r, opt, &s);
 }
 
 /* Draws a line across TABLE at the current row to indicate the most
@@ -1575,23 +1570,18 @@ format_cell_entry (struct tab_table *table, int c, int r, double value,
 {
   const struct fmt_spec f = {FMT_F, 10, 1};
   union value v;
-  struct substring s;
+  int len = 10;
+  char s[16];
 
-  s.length = 10;
-  s.string = tab_alloc (table, 16);
   v.f = value;
-  data_out (&v, &f, s.string);
-  while (*s.string == ' ')
-    {
-      s.length--;
-      s.string++;
-    }
+  data_out (&v, &f, s);
   if (suffix != 0)
-    s.string[s.length++] = suffix;
+    s[len++] = suffix;
   if (mark_missing)
-    s.string[s.length++] = 'M';
+    s[len++] = 'M';
+  s[len] = '\0';
 
-  tab_raw (table, c, r, TAB_RIGHT, &s);
+  tab_text (table, c, r, TAB_RIGHT, s + strspn (s, " "));
 }
 
 /* Displays the crosstabulation table. */
index b3e0de7accfaf55b851850b7b523314da7220571..c94532e81e6f31f4a71d9facf0b6b1c5322343e8 100644 (file)
@@ -782,31 +782,6 @@ tab_joint_text_format (struct tab_table *table, int x1, int y1, int x2, int y2,
                      pool_vasprintf (table->container, format, args));
   va_end (args);
 }
-
-/* Sets cell (C,R) in TABLE, with options OPT, to contents STRING. */
-void
-tab_raw (struct tab_table *table, int c, int r, unsigned opt,
-        struct substring *string)
-{
-  assert (table != NULL && string != NULL);
-
-#if DEBUGGING
-  if (c + table->col_ofs < 0 || r + table->row_ofs < 0
-      || c + table->col_ofs >= tab_nc (table)
-      || r + table->row_ofs >= tab_nr (table))
-    {
-      printf ("tab_raw(): bad cell (%d+%d=%d,%d+%d=%d) in table size "
-             "(%d,%d)\n",
-             c, table->col_ofs, c + table->col_ofs,
-             r, table->row_ofs, r + table->row_ofs,
-             tab_nc (table), tab_nr (table));
-      return;
-    }
-#endif
-
-  table->cc[c + r * table->cf] = *string;
-  table->ct[c + r * table->cf] = opt;
-}
 \f
 /* Miscellaneous. */
 
index e04da584b3e11a236206c8190ce1a7721eeaab53..84c709644a73195f8b9400c041fcf971176c008b 100644 (file)
@@ -182,11 +182,6 @@ void tab_joint_text_format (struct tab_table *, int x1, int y1, int x2, int y2,
                             unsigned opt, const char *, ...)
      PRINTF_FORMAT (7, 8);
 
-/* Cell low-level access. */
-#define tab_alloc(TABLE, AMT) pool_alloc ((TABLE)->container, (AMT))
-void tab_raw (struct tab_table *, int c, int r, unsigned opt,
-             struct substring *);
-
 /* Editing. */
 void tab_offset (struct tab_table *, int col, int row);
 void tab_next_row (struct tab_table *);