gbranden pushed a commit to branch master
in repository groff.

commit 613e384e5072edf8d455710be40a4d94d4b27809
Author: G. Branden Robinson <g.branden.robin...@gmail.com>
AuthorDate: Tue Mar 4 08:33:21 2025 -0600

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

diff --git a/ChangeLog b/ChangeLog
index 65f58d14f..59a9e00d1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2025-03-04  G. Branden Robinson <g.branden.robin...@gmail.com>
+
+       [troff]: Derive class `break_char_node` from struct
+       `container_node`.
+
+       * src/roff/troff/node.h (class break_char_node): Do it.  Drop
+       pointer-to-node member variable and declaration of destructor.
+       * src/roff/troff/node.cpp (break_char_node::break_char_node):
+       Migrate constructors to use new base class.
+       (break_char_node::~break_char_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 `italic_corrected_node` from struct
diff --git a/src/roff/troff/node.cpp b/src/roff/troff/node.cpp
index 398d4abab..d33d7c3b4 100644
--- a/src/roff/troff/node.cpp
+++ b/src/roff/troff/node.cpp
@@ -2915,9 +2915,7 @@ int italic_corrected_node::character_type()
   return nodes->character_type();
 }
 
-// TODO: Derive from abstract class `container_node`.
-class break_char_node : public node {
-  node *nodes;
+class break_char_node : public container_node {
   char break_code;
   char prev_break_code;
   color *col;
@@ -2925,7 +2923,6 @@ public:
   break_char_node(node *, int, int, color *, node * = 0 /* nullptr */);
   break_char_node(node *, int, int, color *, statem *, int,
                  node * = 0 /* nullptr */);
-  ~break_char_node();
   node *copy();
   hunits width();
   vunits vertical_width();
@@ -2952,14 +2949,13 @@ public:
 };
 
 break_char_node::break_char_node(node *n, int bc, int pbc, color *c, node *x)
-: node(x), nodes(n), break_code(bc), prev_break_code(pbc), col(c)
+: container_node(x, n), break_code(bc), prev_break_code(pbc), col(c)
 {
 }
 
 break_char_node::break_char_node(node *n, int bc, int pbc, color *c,
                                 statem *s, int divlevel, node *x)
-: node(x, s, divlevel), nodes(n), break_code(bc), prev_break_code(pbc),
-  col(c)
+: container_node(x, s, divlevel, n), break_code(bc), prev_break_code(pbc), 
col(c)
 {
 }
 
@@ -2973,11 +2969,6 @@ void break_char_node::dump_properties()
   fflush(stderr);
 }
 
-break_char_node::~break_char_node()
-{
-  delete nodes;
-}
-
 node *break_char_node::copy()
 {
   return new break_char_node(nodes->copy(), break_code, prev_break_code,

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

Reply via email to