gbranden pushed a commit to branch master
in repository groff.

commit 94325a91b6813125ee902aa743a8288725606f8c
Author: G. Branden Robinson <g.branden.robin...@gmail.com>
AuthorDate: Sat Mar 15 13:40:08 2025 -0500

    [troff]: Implement recursive node dumping (8g/9).
    
    Derive class `overstrike_node` from struct `container_node`.
    
    * src/roff/troff/node.h (class overstrike_node): Do it.  Drop
      pointer-to-node member variable and declaration of destructor.
    
    * src/roff/troff/node.cpp (overstrike_node::overstrike_node): Migrate
      constructors to use new base class.
    
      (overstrike_node::~overstrike_node): Drop; our base class handles
      destruction of contained node(s).
    
    Changes `pline` request output as follows.
    
    -{"type": "overstrike_node", "diversion level": 0, "is_special_node": 
false, "max_width": 7220},
    +{"type": "overstrike_node", "diversion level": 0, "is_special_node": 
false, "max_width": 7220, "contents": [{"type": "glyph_node", "diversion 
level": 0, "is_special_node": false, "character": "O"}, {"type": "glyph_node", 
"diversion level": 0, "is_special_node": false, "character": "+"}]},
---
 ChangeLog               | 12 ++++++++++++
 src/roff/troff/node.cpp | 10 ++--------
 src/roff/troff/node.h   |  5 +----
 3 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 21b3700b2..a4ced42df 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2025-03-15  G. Branden Robinson <g.branden.robin...@gmail.com>
+
+       [troff]: Derive class `overstrike_node` from struct
+       `container_node`.
+
+       * src/roff/troff/node.h (class overstrike_node): Do it.  Drop
+       pointer-to-node member variable and declaration of destructor.
+       * src/roff/troff/node.cpp (overstrike_node::overstrike_node):
+       Migrate constructors to use new base class.
+       (overstrike_node::~overstrike_node): Drop; our base class
+       handles destruction of contained node(s).
+
 2025-03-15  G. Branden Robinson <g.branden.robin...@gmail.com>
 
        [troff]: Derive class `left_italic_corrected_node` from struct
diff --git a/src/roff/troff/node.cpp b/src/roff/troff/node.cpp
index 0e899dcb4..3d485efeb 100644
--- a/src/roff/troff/node.cpp
+++ b/src/roff/troff/node.cpp
@@ -3299,13 +3299,12 @@ void zero_width_node::vertical_extent(vunits *min, 
vunits *max)
 }
 
 overstrike_node::overstrike_node()
-: nodes(0 /* nullptr */), max_width(H0)
+: container_node(0 /* nullptr */), max_width(H0)
 {
 }
 
 overstrike_node::overstrike_node(statem *s, int divlevel)
-: node(0 /* nullptr */, s, divlevel), nodes(0 /* nullptr */),
-  max_width(H0)
+: container_node(0 /* nullptr */, s, divlevel), max_width(H0)
 {
 }
 
@@ -3316,11 +3315,6 @@ void overstrike_node::dump_properties()
   fflush(stderr);
 }
 
-overstrike_node::~overstrike_node()
-{
-  delete_node_list(nodes);
-}
-
 node *overstrike_node::copy()
 {
   overstrike_node *on = new overstrike_node(state, div_nest_level);
diff --git a/src/roff/troff/node.h b/src/roff/troff/node.h
index 88ac5278a..a03c02a0f 100644
--- a/src/roff/troff/node.h
+++ b/src/roff/troff/node.h
@@ -534,14 +534,11 @@ public:
   void dump_properties();
 };
 
-// TODO: Derive from abstract class `container_node`.
-class overstrike_node : public node {
-  node *nodes;
+class overstrike_node : public container_node {
   hunits max_width;
 public:
   overstrike_node();
   overstrike_node(statem *, int);
-  ~overstrike_node();
   node *copy();
   void tprint(troff_output_file *);
   void overstrike(node *);     // add another node to be overstruck

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

Reply via email to