output: Make global variables less global.
authorBen Pfaff <blp@gnu.org>
Tue, 16 Jun 2009 04:40:06 +0000 (21:40 -0700)
committerBen Pfaff <blp@gnu.org>
Tue, 16 Jun 2009 04:40:06 +0000 (21:40 -0700)
table_num and subtable_num were previously global variables that were
referred to from multiple files.  Now that we want to make tables
renderable from arbitrary contexts, though, we need to save the table
number with the table, so this change implements that.

src/output/manager.c
src/output/manager.h
src/output/table.c

index b134e890d3dc49d304caba147fb4126c2b666377..4699da0311b3aac8d7e1dc5d09a16f02e0735414 100644 (file)
@@ -22,8 +22,8 @@
 #include "output.h"
 
 /* Table. */
-int table_num = 1;
-int subtable_num;
+static int table_num = 1;
+static int subtable_num;
 \f
 /* Increments table_num so different procedures' output can be
    distinguished. */
@@ -99,12 +99,12 @@ som_submit (struct som_entity *t)
       int hl, hr, ht, hb;
       int nc, nr;
 
-      /* Set up to render the table. */
       t->class->flags (t, &flags);
       if (!(flags & SOMF_NO_TITLE))
        subtable_num++;
+      t->table_num = table_num;
+      t->subtable_num = subtable_num;
 
-      /* Do some basic error checking. */
       t->class->count (t, &nc, &nr);
       t->class->headers (t, &hl, &hr, &ht, &hb);
       if (hl + hr > nc || ht + hb > nr)
@@ -260,7 +260,7 @@ render_columns (void *r, struct outp_driver *d, struct som_entity *t,
          if (len > max_len)
            max_len = len;
 
-         t->class->title (r, index++, 0);
+         t->class->title (r, index++, 0, t->table_num, t->subtable_num);
          t->class->render (r, 0, y0, nc, y1);
 
          d->cp_x += tw + 2 * d->prop_em_width;
@@ -293,7 +293,7 @@ render_simple (void *r, struct outp_driver *d, struct som_entity *t,
   assert (d->cp_x == 0);
   assert (tw < d->width && th + d->cp_y < d->length);
 
-  t->class->title (r, 0, 0);
+  t->class->title (r, 0, 0, t->table_num, t->subtable_num);
   t->class->render (r, hl, ht, nc - hr, nr - hb);
   d->cp_y += th;
 }
@@ -342,7 +342,8 @@ render_segments (void *r, struct outp_driver *d, struct som_entity *t,
           else
             {
              t->class->title (r, x_index ? x_index : y_index,
-                              x_index ? y_index : 0);
+                              x_index ? y_index : 0,
+                               t->table_num, t->subtable_num);
              t->class->render (r, x0, y0, x1, y1);
 
              d->cp_y += len;
index 76763ae6682139dfd86f1594ebab97a042d631e7..1aa2c36aae86e60a04360a23affe559a9b65f180 100644 (file)
@@ -47,6 +47,8 @@ struct som_entity
     const struct som_table_class *class;       /* Table class. */
     enum som_type type;                 /* Table or Chart */
     void *ext;                         /* Owned by table or chart class. */
+    int table_num;                      /* Table number. */
+    int subtable_num;                   /* Sub-table number. */
   };
 
 /* Group styles. */
@@ -90,14 +92,10 @@ struct som_table_class
     void (*area) (void *, int *horiz, int *vert);
     void (*cumulate) (void *, int cumtype, int start, int *end,
                       int max, int *actual);
-    void (*title) (void *, int x, int y);
+    void (*title) (void *, int x, int y, int table_num, int subtable_num);
     void (*render) (void *, int x1, int y1, int x2, int y2);
   };
 
-/* Table indexes. */
-extern int table_num;
-extern int subtable_num;
-
 /* Submission. */
 void som_new_series (void);
 void som_submit (struct som_entity *t);
index 3cf6a3ae03e698c218aba24fef3f31d6195c3986..91f99a1f265ca8cd3358cf0fb837156f61f0f2d9 100644 (file)
@@ -1144,7 +1144,7 @@ tabi_cumulate (void *r_, int cumtype, int start, int *end,
    Y.  Y may be zero, or X and Y may be zero, but X should be nonzero
    if Y is nonzero. */
 static void
-tabi_title (void *r_, int x, int y)
+tabi_title (void *r_, int x, int y, int table_num, int subtable_num)
 {
   const struct tab_rendering *r = r_;
   const struct tab_table *t = r->table;