gbranden pushed a commit to branch master
in repository groff.

commit 3b94b1f296bd9a7b6d7f20f888058ccaff5aec46
Author: G. Branden Robinson <g.branden.robin...@gmail.com>
AuthorDate: Mon Mar 17 02:44:59 2025 -0500

    [troff]: Slightly refactor.
    
    Boolify and rename global and local variables, class member functions,
    and member function arguments relating to diversion re-reading and
    interpreter state tracking whether the input stream is being read at the
    beginning of an input line (or the predicate of a certain
    control-structure requests, where ordinary and no-break control
    characters are recognized).
    
    * src/roff/troff/column.cpp (class vjustify_node) [0]:
    * src/roff/troff/node.h (struct node, class word_space_node)
      (class unbreakable_space_node, class diverted_space_node) (class
      diverted_copy_file_node, hmotion_node): Rename `reread()` member
      function to `need_reread()` and demote its argument and return value
      to `bool` and pointer to `bool`, respectively.
    
    * src/roff/troff/column.cpp (vjustify_node::reread) [0]: Rename this...
      (vjustify_node::need_reread) [0]: ...to this, and update return and
      argument types.
    
    * src/roff/troff/input.cpp (bool::reread)
      (diverted_space_node::reread, diverted_copy_file_node::reread)
      (word_space_node::reread, unbreakable_space_node::reread)
      (hmotion_node::reread): Rename this...
      (bool::need_reread, diverted_space_node::need_reread)
      (diverted_copy_file_node::need_reread)
      (word_space_node::need_reread)
      (unbreakable_space_node::need_reread)
      (hmotion_node::need_reread): ...to this, and update return and
      argument types.
    
      (process_input_stack, do_define_macro, transparent_file): Rename
      `bol` to `reading_beginning_of_input_line` and demote it from
      `int` to `bool`.
    
    Drop old-style Emacs file-local variable.  Add editor aid comments.
---
 ChangeLog                 | 36 ++++++++++++++++++++++
 src/roff/troff/column.cpp | 15 ++++++---
 src/roff/troff/input.cpp  | 78 ++++++++++++++++++++++++-----------------------
 src/roff/troff/node.h     | 12 ++++----
 4 files changed, 92 insertions(+), 49 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index c2b515fab..eaa9eacad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,39 @@
+2025-03-17  G. Branden Robinson <g.branden.robin...@gmail.com>
+
+       [troff]: Slightly refactor.  Boolify and rename global and
+       local variables, class member functions, and member function
+       arguments relating to diversion re-reading and interpreter state
+       tracking whether the input stream is being read at the beginning
+       of an input line (or the predicate of a certain
+       control-structure requests, where ordinary and no-break control
+       characters are recognized).
+
+       * src/roff/troff/column.cpp (class vjustify_node) [0]:
+       * src/roff/troff/node.h (struct node, class word_space_node)
+       (class unbreakable_space_node, class diverted_space_node)
+       (class diverted_copy_file_node, hmotion_node): Rename `reread()`
+       member function to `need_reread()` and demote its argument and
+       return value to `bool` and pointer to `bool`, respectively.
+
+       * src/roff/troff/column.cpp (vjustify_node::reread) [0]: Rename
+       this...
+       (vjustify_node::need_reread) [0]: ...to this, and update return
+       and argument types.
+
+       * src/roff/troff/input.cpp (bool::reread)
+       (diverted_space_node::reread, diverted_copy_file_node::reread)
+       (word_space_node::reread, unbreakable_space_node::reread)
+       (hmotion_node::reread): Rename this...
+       (bool::need_reread, diverted_space_node::need_reread)
+       (diverted_copy_file_node::need_reread)
+       (word_space_node::need_reread)
+       (unbreakable_space_node::need_reread)
+       (hmotion_node::need_reread): ...to this, and update return and
+       argument types.
+       (process_input_stack, do_define_macro, transparent_file): Rename
+       `bol` to `reading_beginning_of_input_line` and demote it from
+       `int` to `bool`.
+
 2025-03-17  G. Branden Robinson <g.branden.robin...@gmail.com>
 
        [troff]: Make bracket and overstrike nodes (created with `\b`
diff --git a/src/roff/troff/column.cpp b/src/roff/troff/column.cpp
index 55563ba46..1ae2e1c71 100644
--- a/src/roff/troff/column.cpp
+++ b/src/roff/troff/column.cpp
@@ -1,4 +1,3 @@
-// -*- C++ -*-
 /* Copyright (C) 1989-2020 Free Software Foundation, Inc.
      Written by James Clark (j...@jclark.com)
 
@@ -652,7 +651,7 @@ class vjustify_node : public node {
   symbol typ;
 public:
   vjustify_node(symbol);
-  int reread(int *);
+  bool need_reread(bool *);
   const char *type();
   int same(node *);
   node *copy();
@@ -678,11 +677,11 @@ int vjustify_node::same(node *nd)
   return typ == ((vjustify_node *)nd)->typ;
 }
 
-int vjustify_node::reread(int *bolp)
+bool vjustify_node::need_reread(bool *bolp)
 {
   curdiv->vjustify(typ);
-  *bolp = 1;
-  return 1;
+  *bolp = true;
+  return true;
 }
 
 void macro_diversion::vjustify(symbol type)
@@ -729,3 +728,9 @@ void init_column_requests()
 }
 
 #endif /* COLUMN */
+
+// Local Variables:
+// fill-column: 72
+// mode: C++
+// End:
+// vim: set cindent noexpandtab shiftwidth=2 textwidth=72:
diff --git a/src/roff/troff/input.cpp b/src/roff/troff/input.cpp
index 6ad60425a..1235c4d08 100644
--- a/src/roff/troff/input.cpp
+++ b/src/roff/troff/input.cpp
@@ -3059,14 +3059,14 @@ static int transparent_translate(int cc)
   return cc;
 }
 
-int node::reread(int *)
+bool node::need_reread(bool *)
 {
-  return 0 /* nullptr */;
+  return false;
 }
 
 int global_diverted_space = 0;
 
-int diverted_space_node::reread(int *bolp)
+bool diverted_space_node::need_reread(bool *bolp)
 {
   global_diverted_space = 1;
   if (curenv->get_fill())
@@ -3074,41 +3074,41 @@ int diverted_space_node::reread(int *bolp)
   else
     curdiv->space(n);
   global_diverted_space = 0;
-  *bolp = 1;
-  return 1;
+  *bolp = true;
+  return true;
 }
 
-int diverted_copy_file_node::reread(int *bolp)
+bool diverted_copy_file_node::need_reread(bool *bolp)
 {
   curdiv->copy_file(filename.contents());
-  *bolp = 1;
-  return 1;
+  *bolp = true;
+  return true;
 }
 
-int word_space_node::reread(int *)
+bool word_space_node::need_reread(bool *)
 {
   if (unformat) {
     for (width_list *w = orig_width; w; w = w->next)
       curenv->space(w->width, w->sentence_width);
     unformat = 0;
-    return 1;
+    return true;
   }
-  return 0;
+  return false;
 }
 
-int unbreakable_space_node::reread(int *)
+bool unbreakable_space_node::need_reread(bool *)
 {
-  return 0;
+  return false;
 }
 
-int hmotion_node::reread(int *)
+bool hmotion_node::need_reread(bool *)
 {
   if (unformat && was_tab) {
     curenv->handle_tab(0);
     unformat = 0;
-    return 1;
+    return true;
   }
-  return 0;
+  return false;
 }
 
 static int leading_spaces_number = 0;
@@ -3117,14 +3117,14 @@ static int leading_spaces_space = 0;
 void process_input_stack()
 {
   std::stack<int> trap_bol_stack;
-  int bol = 1;
+  bool reading_beginning_of_input_line = true;
   for (;;) {
     int suppress_next = 0;
     switch (tok.type) {
     case token::TOKEN_CHAR:
       {
        unsigned char ch = tok.c;
-       if (bol && !have_formattable_input
+       if (reading_beginning_of_input_line && !have_formattable_input
            && (curenv->get_control_character() == ch
                || curenv->get_no_break_control_character() == ch)) {
          want_break = (curenv->get_control_character() == ch);
@@ -3179,14 +3179,14 @@ void process_input_stack()
              ch = tok.c;
            }
            suppress_next = 1;
-           bol = 0;
+           reading_beginning_of_input_line = false;
          }
        }
        break;
       }
     case token::TOKEN_TRANSPARENT:
       {
-       if (bol) {
+       if (reading_beginning_of_input_line) {
          if (possibly_handle_first_page_transition())
            ;
          else {
@@ -3209,12 +3209,13 @@ void process_input_stack()
       }
     case token::TOKEN_NEWLINE:
       {
-       if (bol && !have_formattable_input_on_interrupted_line
+       if (reading_beginning_of_input_line
+           && !have_formattable_input_on_interrupted_line
            && !curenv->get_prev_line_interrupted())
          trapping_blank_line();
        else {
          curenv->newline();
-         bol = 1;
+         reading_beginning_of_input_line = true;
        }
        break;
       }
@@ -3248,7 +3249,8 @@ void process_input_stack()
       {
        if (possibly_handle_first_page_transition())
          ;
-       else if (bol && !curenv->get_prev_line_interrupted()) {
+       else if (reading_beginning_of_input_line
+                && !curenv->get_prev_line_interrupted()) {
          int nspaces = 0;
          // save space_width now so that it isn't changed by \f or \s
          // which we wouldn't notice here
@@ -3270,12 +3272,12 @@ void process_input_stack()
              curenv->add_node(new hmotion_node(space_width * nspaces,
                                                curenv->get_fill_color()));
            }
-           bol = 0;
+           reading_beginning_of_input_line = false;
          }
        }
        else {
          curenv->space();
-         bol = 0;
+         reading_beginning_of_input_line = false;
        }
        break;
       }
@@ -3286,14 +3288,14 @@ void process_input_stack()
       {
        if (possibly_handle_first_page_transition())
          ;
-       else if (tok.nd->reread(&bol)) {
+       else if (tok.nd->need_reread(&reading_beginning_of_input_line)) {
          delete tok.nd;
          tok.nd = 0;
        }
        else {
          curenv->add_node(tok.nd);
          tok.nd = 0;
-         bol = 0;
+         reading_beginning_of_input_line = false;
          curenv->possibly_break_line(true /* must break here */);
        }
        break;
@@ -3302,13 +3304,13 @@ void process_input_stack()
       {
        continue_page_eject();
        // I think we just want to preserve bol.
-       // bol = 1;
+       // reading_beginning_of_input_line = true;
        break;
       }
     case token::TOKEN_BEGIN_TRAP:
       {
-       trap_bol_stack.push(bol);
-       bol = 1;
+       trap_bol_stack.push(reading_beginning_of_input_line);
+       reading_beginning_of_input_line = true;
        have_formattable_input = false;
        break;
       }
@@ -3317,7 +3319,7 @@ void process_input_stack()
        if (trap_bol_stack.empty())
          error("spurious end trap token detected!");
        else {
-         bol = trap_bol_stack.top();
+         reading_beginning_of_input_line = trap_bol_stack.top();
          trap_bol_stack.pop();
        }
        have_formattable_input = false;
@@ -3348,7 +3350,7 @@ void process_input_stack()
       }
     default:
       {
-       bol = 0;
+       reading_beginning_of_input_line = false;
        tok.process();
        break;
       }
@@ -5001,7 +5003,7 @@ void do_define_macro(define_mode mode, calling_mode 
calling, comp_mode comp)
     if (mm && mode == DEFINE_APPEND)
       mac = *mm;
   }
-  int bol = 1;
+  bool reading_beginning_of_input_line = true;
   if (comp == COMP_DISABLE)
     mac.append(PUSH_GROFF_MODE);
   else if (comp == COMP_ENABLE)
@@ -5014,7 +5016,7 @@ void do_define_macro(define_mode mode, calling_mode 
calling, comp_mode comp)
        mac.append(c);
       c = get_copy(&n, true /* is defining */);
     }
-    if (bol && c == '.') {
+    if (reading_beginning_of_input_line && c == '.') {
       const char *s = term.contents();
       int d = 0;
       // see if it matches term
@@ -5087,7 +5089,7 @@ void do_define_macro(define_mode mode, calling_mode 
calling, comp_mode comp)
       else
        mac.append(c);
     }
-    bol = (c == '\n');
+    reading_beginning_of_input_line = (c == '\n');
     c = get_copy(&n, true /* is defining */);
   }
 }
@@ -8766,7 +8768,7 @@ void transparent_file()
     if (0 /* nullptr */ == fp)
       error("cannot open '%1': %2", filename, strerror(errno));
     else {
-      int bol = 1;
+      bool reading_beginning_of_input_line = true;
       for (;;) {
        int c = getc(fp);
        if (c == EOF)
@@ -8775,10 +8777,10 @@ void transparent_file()
          warning(WARN_INPUT, "invalid input character code %1", int(c));
        else {
          curdiv->transparent_output(c);
-         bol = c == '\n';
+         reading_beginning_of_input_line = c == '\n';
        }
       }
-      if (!bol)
+      if (!reading_beginning_of_input_line)
        curdiv->transparent_output('\n');
       fclose(fp);
     }
diff --git a/src/roff/troff/node.h b/src/roff/troff/node.h
index 0ac87d481..cbd04c464 100644
--- a/src/roff/troff/node.h
+++ b/src/roff/troff/node.h
@@ -98,7 +98,7 @@ struct node {
   virtual int nbreaks();
   virtual void split(int, node **, node **);
   virtual hyphenation_type get_hyphenation_type();
-  virtual int reread(int *);
+  virtual bool need_reread(bool *);
   virtual token_node *get_token_node();
   virtual int overlaps_vertically();
   virtual int overlaps_horizontally();
@@ -245,7 +245,7 @@ public:
                  node * /* x */ = 0 /* nullptr */);
   ~word_space_node();
   node *copy();
-  int reread(int *);
+  bool need_reread(bool *);
   bool set_unformat_flag();
   void tprint(troff_output_file *);
   bool is_same_as(node *);
@@ -264,7 +264,7 @@ public:
   unbreakable_space_node(hunits, color *,
                         node * /* x */ = 0 /* nullptr */);
   node *copy();
-  int reread(int *);
+  bool need_reread(bool *);
   void tprint(troff_output_file *);
   bool is_same_as(node *);
   void asciify(macro *);
@@ -289,7 +289,7 @@ public:
   diverted_space_node(vunits, statem *, int,
                      node * /* p */ = 0 /* nullptr */);
   node *copy();
-  int reread(int *);
+  bool need_reread(bool *);
   bool is_same_as(node *);
   const char *type();
   bool causes_tprint();
@@ -305,7 +305,7 @@ public:
   diverted_copy_file_node(symbol, statem *, int,
                          node * /* p */ = 0 /* nullptr */);
   node *copy();
-  int reread(int *);
+  bool need_reread(bool *);
   bool is_same_as(node *);
   const char *type();
   bool causes_tprint();
@@ -364,7 +364,7 @@ public:
               node *nxt = 0 /* nullptr */)
     : node(nxt), n(i), was_tab(flag1), unformat(flag2), col(c) {}
   node *copy();
-  int reread(int *);
+  bool need_reread(bool *);
   bool set_unformat_flag();
   void asciify(macro *);
   void tprint(troff_output_file *);

_______________________________________________
groff-commit mailing list
groff-commit@gnu.org
https://lists.gnu.org/mailman/listinfo/groff-commit

Reply via email to