gbranden pushed a commit to branch master
in repository groff.

commit 06ae6d9c0d6430b98307ff4ed8b68f09d6f2efde
Author: G. Branden Robinson <[email protected]>
AuthorDate: Sun Dec 21 12:15:16 2025 -0600

    [troff]: Refactor (1/2).
    
    Move page offset updates from language parser logic into "engine" logic.
    
    * src/roff/troff/div.h (class top_level_diversion): Declare new member
      function `set_page_offset()`.
    
      (top_level_diversion::set_page_offset): Define it, and make it
      responsible for updating both `page_offset` and `prev_page_offset`
      private member variables.
    
    * src/roff/troff/div.cpp (page_offset): Make request handler call this
      new mutator member function instead of manipulating the diversion's
      properties directly.
---
 ChangeLog              | 14 ++++++++++++++
 src/roff/troff/div.cpp |  3 +--
 src/roff/troff/div.h   |  7 +++++++
 3 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 86ba659ec..48ad2340a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2025-12-21  G. Branden Robinson <[email protected]>
+
+       [troff]: Refactor.  Move page offset updates from language
+       parser logic into "engine" logic.
+
+       * src/roff/troff/div.h (class top_level_diversion): Declare new
+       member function `set_page_offset()`.
+       (top_level_diversion::set_page_offset): Define it, and make it
+       responsible for updating both `page_offset` and
+       `prev_page_offset` private member variables.
+       * src/roff/troff/div.cpp (page_offset): Make request handler
+       call this new mutator member function instead of manipulating
+       the diversion's properties directly.
+
 2025-12-21  G. Branden Robinson <[email protected]>
 
        [grohtml,grotty]: Fix Savannah #67843.
diff --git a/src/roff/troff/div.cpp b/src/roff/troff/div.cpp
index ed5b8e727..98251851c 100644
--- a/src/roff/troff/div.cpp
+++ b/src/roff/troff/div.cpp
@@ -743,8 +743,7 @@ void page_offset()
   // oriented request.
   if (!has_arg() || !read_hunits(&n, 'm', topdiv->page_offset))
     n = topdiv->prev_page_offset;
-  topdiv->prev_page_offset = topdiv->page_offset;
-  topdiv->page_offset = n;
+  topdiv->set_page_offset(n);
   topdiv->modified_tag.incl(MTSM_PO);
   skip_line();
 }
diff --git a/src/roff/troff/div.h b/src/roff/troff/div.h
index aa0a19f3b..e43a56292 100644
--- a/src/roff/troff/div.h
+++ b/src/roff/troff/div.h
@@ -125,6 +125,7 @@ public:
   void vjustify(symbol);
 #endif /* COLUMN */
   hunits get_page_offset() { return page_offset; }
+  void set_page_offset(hunits /* h */);
   vunits get_page_length() { return page_length; }
   vunits distance_to_next_trap();
   const char *get_next_trap_name();
@@ -150,6 +151,12 @@ public:
   bool is_diversion() { return false; }
 };
 
+inline void top_level_diversion::set_page_offset(hunits h)
+{
+  prev_page_offset = page_offset;
+  page_offset = h;
+}
+
 extern top_level_diversion *topdiv;
 extern diversion *curdiv;
 

_______________________________________________
groff-commit mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/groff-commit

Reply via email to