gbranden pushed a commit to branch master
in repository groff.

commit 424b8e453aab357323984e4f6a4bad537784d54d
Author: G. Branden Robinson <g.branden.robin...@gmail.com>
AuthorDate: Tue Mar 4 07:26:41 2025 -0600

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

diff --git a/ChangeLog b/ChangeLog
index 7094d2080..65f58d14f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2025-03-04  G. Branden Robinson <g.branden.robin...@gmail.com>
+
+       [troff]: Derive class `italic_corrected_node` from struct
+       `container_node`.
+
+       * src/roff/troff/node.h (class italic_corrected_node): Do it.
+       Drop pointer-to-node member variable and declaration of
+       destructor.
+       * src/roff/troff/node.cpp
+       (italic_corrected_node::italic_corrected_node): Migrate
+       constructors to use new base class.
+       (italic_corrected_node::~italic_corrected_node): Drop; our base
+       class handles destruction of contained node(s).
+
 2025-03-04  G. Branden Robinson <g.branden.robin...@gmail.com>
 
        [troff]: Derive class `zero_width_node` from struct
diff --git a/src/roff/troff/node.cpp b/src/roff/troff/node.cpp
index 58c89e97d..398d4abab 100644
--- a/src/roff/troff/node.cpp
+++ b/src/roff/troff/node.cpp
@@ -2771,14 +2771,11 @@ hunits dbreak_node::subscript_correction()
   return none ? none->subscript_correction() : H0;
 }
 
-// TODO: Derive from abstract class `container_node`.
-class italic_corrected_node : public node {
-  node *nodes;
+class italic_corrected_node : public container_node {
   hunits x;
 public:
   italic_corrected_node(node *, hunits, statem *, int,
                        node * = 0 /* nullptr */);
-  ~italic_corrected_node();
   node *copy();
   void ascii_print(ascii_output_file *);
   void asciify(macro *);
@@ -2818,7 +2815,7 @@ node *node::add_italic_correction(hunits *wd)
 
 italic_corrected_node::italic_corrected_node(node *nn, hunits xx, statem *s,
                                             int divlevel, node *p)
-: node(p, s, divlevel), nodes(nn), x(xx)
+: container_node(p, s, divlevel, nn), x(xx)
 {
   assert(nodes != 0 /* nullptr */);
 }
@@ -2830,11 +2827,6 @@ void italic_corrected_node::dump_properties()
   fflush(stderr);
 }
 
-italic_corrected_node::~italic_corrected_node()
-{
-  delete nodes;
-}
-
 node *italic_corrected_node::copy()
 {
   return new italic_corrected_node(nodes->copy(), x, state,

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

Reply via email to