groff-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Groff-commit] groff/src/preproc/tbl table.cpp


From: Eric S. Raymond
Subject: [Groff-commit] groff/src/preproc/tbl table.cpp
Date: Fri, 09 Feb 2007 10:20:09 +0000

CVSROOT:        /sources/groff
Module name:    groff
Changes by:     Eric S. Raymond <esr>   07/02/09 10:20:09

Modified files:
        src/preproc/tbl: table.cpp 

Log message:
        Initializers for table_entry() and all its subclasses now receive a
        pointer to their parent table and use it to set a parent field in 
        the instance.  This changes no behavior in itself, because the parent 
field 
        is not yet used for anything.  But there are plans.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/groff/src/preproc/tbl/table.cpp?cvsroot=groff&r1=1.7&r2=1.8

Patches:
Index: table.cpp
===================================================================
RCS file: /sources/groff/groff/src/preproc/tbl/table.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- table.cpp   26 May 2005 21:02:01 -0000      1.7
+++ table.cpp   9 Feb 2007 10:20:08 -0000       1.8
@@ -148,10 +148,11 @@
   int end_row;
   int start_col;
   int end_col;
+  const table *parent;
   const entry_modifier *mod;
 public:
   void set_location();
-  table_entry(const entry_modifier *);
+  table_entry(const table *parent, const entry_modifier *);
   virtual ~table_entry();
   virtual int divert(int ncols, const string *mw, int *sep);
   virtual void do_width();
@@ -168,7 +169,7 @@
 
 class simple_entry : public table_entry {
 public:
-  simple_entry(const entry_modifier *);
+  simple_entry(const table *parent, const entry_modifier *);
   void print();
   void position_vertically();
   simple_entry *to_simple_entry();
@@ -178,7 +179,7 @@
 
 class empty_entry : public simple_entry {
 public:
-  empty_entry(const entry_modifier *);
+  empty_entry(const table *, const entry_modifier *);
   int line_type();
 };
 
@@ -187,7 +188,7 @@
   char *contents;
   void print_contents();
 public:
-  text_entry(char *, const entry_modifier *);
+  text_entry(const table *, const entry_modifier *, char *);
   ~text_entry();
 };
 
@@ -200,33 +201,33 @@
 
 class repeated_char_entry : public text_entry {
 public:
-  repeated_char_entry(char *s, const entry_modifier *m);
+  repeated_char_entry(const table *, const entry_modifier *, char *);
   void simple_print(int);
 };
 
 class simple_text_entry : public text_entry {
 public:
-  simple_text_entry(char *s, const entry_modifier *m);
+  simple_text_entry(const table *, const entry_modifier *, char *);
   void do_width();
 };
 
 class left_text_entry : public simple_text_entry {
 public:
-  left_text_entry(char *s, const entry_modifier *m);
+  left_text_entry(const table *, const entry_modifier *, char *);
   void simple_print(int);
   void add_tab();
 };
 
 class right_text_entry : public simple_text_entry {
 public:
-  right_text_entry(char *s, const entry_modifier *m);
+  right_text_entry(const table *, const entry_modifier *, char *);
   void simple_print(int);
   void add_tab();
 };
 
 class center_text_entry : public simple_text_entry {
 public:
-  center_text_entry(char *s, const entry_modifier *m);
+  center_text_entry(const table *, const entry_modifier *, char *);
   void simple_print(int);
   void add_tab();
 };
@@ -234,14 +235,14 @@
 class numeric_text_entry : public text_entry {
   int dot_pos;
 public:
-  numeric_text_entry(char *s, const entry_modifier *m, int pos);
+  numeric_text_entry(const table *, const entry_modifier *, char *, int pos);
   void do_width();
   void simple_print(int);
 };
 
 class alphabetic_text_entry : public text_entry {
 public:
-  alphabetic_text_entry(char *s, const entry_modifier *m);
+  alphabetic_text_entry(const table *, const entry_modifier *, char *);
   void do_width();
   void simple_print(int);
   void add_tab();
@@ -252,7 +253,7 @@
   char double_vrule_on_right;
   char double_vrule_on_left;
 public:
-  line_entry(const entry_modifier *);
+  line_entry(const table *, const entry_modifier *);
   void note_double_vrule_on_right(int);
   void note_double_vrule_on_left(int);
   void simple_print(int) = 0;
@@ -260,7 +261,7 @@
 
 class single_line_entry : public line_entry {
 public:
-  single_line_entry(const entry_modifier *m);
+  single_line_entry(const table *, const entry_modifier *);
   void simple_print(int);
   single_line_entry *to_single_line_entry();
   int line_type();
@@ -268,7 +269,7 @@
 
 class double_line_entry : public line_entry {
 public:
-  double_line_entry(const entry_modifier *m);
+  double_line_entry(const table *, const entry_modifier *);
   void simple_print(int);
   double_line_entry *to_double_line_entry();
   int line_type();
@@ -276,14 +277,14 @@
 
 class short_line_entry : public simple_entry {
 public:
-  short_line_entry(const entry_modifier *m);
+  short_line_entry(const table *, const entry_modifier *);
   void simple_print(int);
   int line_type();
 };
 
 class short_double_line_entry : public simple_entry {
 public:
-  short_double_line_entry(const entry_modifier *m);
+  short_double_line_entry(const table *, const entry_modifier *);
   void simple_print(int);
   int line_type();
 };
@@ -293,7 +294,7 @@
 protected:
   void do_divert(int alphabetic, int ncols, const string *mw, int *sep);
 public:
-  block_entry(char *s, const entry_modifier *m);
+  block_entry(const table *, const entry_modifier *, char *);
   ~block_entry();
   int divert(int ncols, const string *mw, int *sep);
   void do_width();
@@ -304,32 +305,32 @@
 
 class left_block_entry : public block_entry {
 public:
-  left_block_entry(char *s, const entry_modifier *m);
+  left_block_entry(const table *, const entry_modifier *, char *);
   void print();
 };
 
 class right_block_entry : public block_entry {
 public:
-  right_block_entry(char *s, const entry_modifier *m);
+  right_block_entry(const table *, const entry_modifier *, char *);
   void print();
 };
 
 class center_block_entry : public block_entry {
 public:
-  center_block_entry(char *s, const entry_modifier *m);
+  center_block_entry(const table *, const entry_modifier *, char *);
   void print();
 };
 
 class alphabetic_block_entry : public block_entry {
 public:
-  alphabetic_block_entry(char *s, const entry_modifier *m);
+  alphabetic_block_entry(const table *, const entry_modifier *, char *);
   void print();
   int divert(int ncols, const string *mw, int *sep);
 };
 
-table_entry::table_entry(const entry_modifier *m)
+table_entry::table_entry(const table *p, const entry_modifier *m)
 : next(0), input_lineno(-1), input_filename(0),
-  start_row(-1), end_row(-1), start_col(-1), end_col(-1), mod(m)
+  start_row(-1), end_row(-1), start_col(-1), end_col(-1), parent(p), mod(m)
 {
 }
 
@@ -383,7 +384,7 @@
 {
 }
 
-simple_entry::simple_entry(const entry_modifier *m) : table_entry(m)
+simple_entry::simple_entry(const table *p, const entry_modifier *m) : 
table_entry(p, m)
 {
 }
 
@@ -436,8 +437,8 @@
   return this;
 }
 
-empty_entry::empty_entry(const entry_modifier *m)
-: simple_entry(m)
+empty_entry::empty_entry(const table *p, const entry_modifier *m)
+  : simple_entry(p, m)
 {
 }
 
@@ -446,8 +447,8 @@
   return 0;
 }
 
-text_entry::text_entry(char *s, const entry_modifier *m)
-: simple_entry(m), contents(s)
+text_entry::text_entry(const table *p, const entry_modifier *m, char *s)
+  : simple_entry(p, m), contents(s)
 {
 }
 
@@ -456,8 +457,8 @@
   a_delete contents;
 }
 
-repeated_char_entry::repeated_char_entry(char *s, const entry_modifier *m)
-: text_entry(s, m)
+repeated_char_entry::repeated_char_entry(const table *p, const entry_modifier 
*m, char *s)
+  : text_entry(p, m, s)
 {
 }
 
@@ -472,8 +473,8 @@
   restore_inline_modifier(mod);
 }
 
-simple_text_entry::simple_text_entry(char *s, const entry_modifier *m)
-: text_entry(s, m)
+simple_text_entry::simple_text_entry(const table *p, const entry_modifier *m, 
char *s)
+  : text_entry(p, m, s)
 {
 }
 
@@ -486,8 +487,8 @@
   prints(DELIMITER_CHAR "\n");
 }
 
-left_text_entry::left_text_entry(char *s, const entry_modifier *m)
-: simple_text_entry(s, m)
+left_text_entry::left_text_entry(const table *p, const entry_modifier *m, char 
*s)
+  : simple_text_entry(p, m, s)
 {
 }
 
@@ -504,8 +505,8 @@
   printfs(" \\n[%1]u", column_end_reg(end_col));
 }
 
-right_text_entry::right_text_entry(char *s, const entry_modifier *m)
-: simple_text_entry(s, m)
+right_text_entry::right_text_entry(const table *p, const entry_modifier *m, 
char *s)
+  : simple_text_entry(p, m, s)
 {
 }
 
@@ -522,8 +523,8 @@
   printfs(" \\n[%1]u", column_end_reg(end_col));
 }
 
-center_text_entry::center_text_entry(char *s, const entry_modifier *m)
-: simple_text_entry(s, m)
+center_text_entry::center_text_entry(const table *p, const entry_modifier *m, 
char *s)
+  : simple_text_entry(p, m, s)
 {
 }
 
@@ -540,8 +541,8 @@
   printfs(" \\n[%1]u", column_end_reg(end_col));
 }
 
-numeric_text_entry::numeric_text_entry(char *s, const entry_modifier *m, int 
pos)
-: text_entry(s, m), dot_pos(pos)
+numeric_text_entry::numeric_text_entry(const table *p, const entry_modifier 
*m, char *s, int pos)
+  : text_entry(p, m, s), dot_pos(pos)
 {
 }
 
@@ -584,8 +585,8 @@
   print_contents();
 }
 
-alphabetic_text_entry::alphabetic_text_entry(char *s, const entry_modifier *m)
-: text_entry(s, m)
+alphabetic_text_entry::alphabetic_text_entry(const table *p, const 
entry_modifier *m, char *s)
+  : text_entry(p, m, s)
 {
 }
 
@@ -614,8 +615,7 @@
   printfs(" \\n[%1]u", column_end_reg(end_col));
 }
 
-block_entry::block_entry(char *s, const entry_modifier *m)
-: table_entry(m), contents(s)
+block_entry::block_entry(const table *p, const entry_modifier *m, char *s) : 
table_entry(p, m), contents(s)
 {
 }
 
@@ -724,8 +724,8 @@
          block_height_reg(start_row, start_col));
 }
 
-left_block_entry::left_block_entry(char *s, const entry_modifier *m)
-: block_entry(s, m)
+left_block_entry::left_block_entry(const table *p, const entry_modifier *m, 
char *s)
+  : block_entry(p, m, s)
 {
 }
 
@@ -736,8 +736,8 @@
   prints(".in\n");
 }
 
-right_block_entry::right_block_entry(char *s, const entry_modifier *m)
-: block_entry(s, m)
+right_block_entry::right_block_entry(const table *p, const entry_modifier *m, 
char *s)
+  : block_entry(p, m, s)
 {
 }
 
@@ -751,8 +751,8 @@
   prints(".in\n");
 }
 
-center_block_entry::center_block_entry(char *s, const entry_modifier *m)
-: block_entry(s, m)
+center_block_entry::center_block_entry(const table *p, const entry_modifier 
*m, char *s)
+  : block_entry(p, m, s)
 {
 }
 
@@ -766,9 +766,10 @@
   prints(".in\n");
 }
 
-alphabetic_block_entry::alphabetic_block_entry(char *s,
-                                              const entry_modifier *m)
-: block_entry(s, m)
+alphabetic_block_entry::alphabetic_block_entry(const table *p,
+                                              const entry_modifier *m,
+                                              char *s)
+  : block_entry(p, m, s)
 {
 }
 
@@ -788,8 +789,8 @@
   prints(".in\n");
 }
 
-line_entry::line_entry(const entry_modifier *m)
-: simple_entry(m), double_vrule_on_right(0), double_vrule_on_left(0)
+line_entry::line_entry(const table *p, const entry_modifier *m)
+  : simple_entry(p, m), double_vrule_on_right(0), double_vrule_on_left(0)
 {
 }
 
@@ -803,8 +804,8 @@
   double_vrule_on_left = is_corner ? 1 : 2;
 }
 
-single_line_entry::single_line_entry(const entry_modifier *m)
-: line_entry(m)
+single_line_entry::single_line_entry(const table *p, const entry_modifier *m)
+  : line_entry(p, m)
 {
 }
 
@@ -840,8 +841,8 @@
   return this;
 }
 
-double_line_entry::double_line_entry(const entry_modifier *m)
-: line_entry(m)
+double_line_entry::double_line_entry(const table *p, const entry_modifier *m)
+  : line_entry(p, m)
 {
 }
 
@@ -887,8 +888,8 @@
   return this;
 }
 
-short_line_entry::short_line_entry(const entry_modifier *m)
-: simple_entry(m)
+short_line_entry::short_line_entry(const table *p, const entry_modifier *m)
+  : simple_entry(p, m)
 {
 }
 
@@ -914,8 +915,8 @@
     prints("\\v'.5v'");
 }
 
-short_double_line_entry::short_double_line_entry(const entry_modifier *m)
-: simple_entry(m)
+short_double_line_entry::short_double_line_entry(const table *p, const 
entry_modifier *m)
+  : simple_entry(p, m)
 {
 }
 
@@ -1449,10 +1450,10 @@
   allocate(r);
   table_entry *e = 0;
   if (str == "\\_") {
-    e = new short_line_entry(f);
+    e = new short_line_entry(this, f);
   }
   else if (str == "\\=") {
-    e = new short_double_line_entry(f);
+    e = new short_double_line_entry(this, f);
   }
   else if (str == "_") {
     single_line_entry *lefte;
@@ -1464,7 +1465,7 @@
       entry[r][c] = lefte;
     }
     else
-      e = new single_line_entry(f);
+      e = new single_line_entry(this, f);
   }
   else if (str == "=") {
     double_line_entry *lefte;
@@ -1476,7 +1477,7 @@
       entry[r][c] = lefte;
     }
     else
-      e = new double_line_entry(f);
+      e = new double_line_entry(this, f);
   }
   else if (str == "\\^") {
     do_vspan(r, c);
@@ -1486,7 +1487,7 @@
       error_with_file_and_line(fn, ln, "bad repeated character");
     else {
       char *s = str.substring(2, str.length() - 2).extract();
-      e = new repeated_char_entry(s, f);
+      e = new repeated_char_entry(this, f, s);
     }
   }
   else {
@@ -1501,63 +1502,63 @@
       if (!str.empty()) {
        s = str.extract();
        if (is_block)
-         e = new left_block_entry(s, f);
+         e = new left_block_entry(this, f, s);
        else
-         e = new left_text_entry(s, f);
+         e = new left_text_entry(this, f, s);
       }
       else
-       e = new empty_entry(f);
+       e = new empty_entry(this, f);
       break;
     case FORMAT_CENTER:
       if (!str.empty()) {
        s = str.extract();
        if (is_block)
-         e = new center_block_entry(s, f);
+         e = new center_block_entry(this, f, s);
        else
-         e = new center_text_entry(s, f);
+         e = new center_text_entry(this, f, s);
       }
       else
-       e = new empty_entry(f);
+       e = new empty_entry(this, f);
       break;
     case FORMAT_RIGHT:
       if (!str.empty()) {
        s = str.extract();
        if (is_block)
-         e = new right_block_entry(s, f);
+         e = new right_block_entry(this, f, s);
        else
-         e = new right_text_entry(s, f);
+         e = new right_text_entry(this, f, s);
       }
       else
-       e = new empty_entry(f);
+       e = new empty_entry(this, f);
       break;
     case FORMAT_NUMERIC:
       if (!str.empty()) {
        s = str.extract();
        if (is_block) {
          error_with_file_and_line(fn, ln, "can't have numeric text block");
-         e = new left_block_entry(s, f);
+         e = new left_block_entry(this, f, s);
        }
        else {
          int pos = find_decimal_point(s, decimal_point_char, delim);
          if (pos < 0)
-           e = new center_text_entry(s, f);
+           e = new center_text_entry(this, f, s);
          else
-           e = new numeric_text_entry(s, f, pos);
+           e = new numeric_text_entry(this, f, s, pos);
        }
       }
       else
-       e = new empty_entry(f);
+       e = new empty_entry(this, f);
       break;
     case FORMAT_ALPHABETIC:
       if (!str.empty()) {
        s = str.extract();
        if (is_block)
-         e = new alphabetic_block_entry(s, f);
+         e = new alphabetic_block_entry(this, f, s);
        else
-         e = new alphabetic_text_entry(s, f);
+         e = new alphabetic_text_entry(this, f, s);
       }
       else
-       e = new empty_entry(f);
+       e = new empty_entry(this, f);
       break;
     case FORMAT_VSPAN:
       do_vspan(r, c);
@@ -1566,13 +1567,13 @@
       if (str.length() != 0)
        error_with_file_and_line(fn, ln,
                                 "non-empty data entry for `_' format ignored");
-      e = new single_line_entry(f);
+      e = new single_line_entry(this, f);
       break;
     case FORMAT_DOUBLE_HLINE:
       if (str.length() != 0)
        error_with_file_and_line(fn, ln,
                                 "non-empty data entry for `=' format ignored");
-      e = new double_line_entry(f);
+      e = new double_line_entry(this, f);
       break;
     default:
       assert(0);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]