gbranden pushed a commit to branch master
in repository groff.

commit 5caf50d1be7ddb716e6f53e96975f1a58cefe527
Author: G. Branden Robinson <g.branden.robin...@gmail.com>
AuthorDate: Mon Mar 3 11:34:12 2025 -0600

    [troff]: Implement recursive node dumping (8b/9).
    
    * src/roff/troff/node.h (class vline_node): Do it.  Drop pointer-to-node
      member variable and declaration of destructor.
    
    * src/roff/troff/node.cpp (vline_node::~vline_node): Drop; our base
      class handles destruction of contained node(s).
    
      (vline_node::vline_node): Migrate constructors to use new base
      class.
    
    Changes `pline` request output as follows.
    
    -{"type": "vline_node", "diversion level": 0, "is_special_node": false, 
"vunits": 15000},
    +{"type": "vline_node", "diversion level": 0, "is_special_node": false, 
"vunits": 15000, "contents": [{"type": "glyph_node", "diversion level": 0, 
"is_special_node": false, "character": "!"}]},
---
 ChangeLog               | 11 +++++++++++
 src/roff/troff/node.cpp |  9 ++-------
 src/roff/troff/node.h   |  5 +----
 3 files changed, 14 insertions(+), 11 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index da6ca9347..19178b721 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2025-03-03  G. Branden Robinson <g.branden.robin...@gmail.com>
+
+       [troff]: Derive class `vline_node` from struct `container_node`.
+
+       * src/roff/troff/node.h (class vline_node): Do it.  Drop
+       pointer-to-node member variable and declaration of destructor.
+       * src/roff/troff/node.cpp (vline_node::~vline_node): Drop; our
+       base class handles destruction of contained node(s).
+       (vline_node::vline_node): Migrate constructors to use new base
+       class.
+
 2025-03-03  G. Branden Robinson <g.branden.robin...@gmail.com>
 
        [troff]: Derive class `hline_node` from struct `container_node`.
diff --git a/src/roff/troff/node.cpp b/src/roff/troff/node.cpp
index 78f1080cc..2080d5066 100644
--- a/src/roff/troff/node.cpp
+++ b/src/roff/troff/node.cpp
@@ -3234,13 +3234,13 @@ hunits hline_node::width()
 }
 
 vline_node::vline_node(vunits i, node *c, node *nxt)
-: node(nxt), x(i), nodes(c)
+: container_node(nxt, c), x(i)
 {
 }
 
 vline_node::vline_node(vunits i, node *c, statem *s,
                       int divlevel, node *nxt)
-: node(nxt, s, divlevel), x(i), nodes(c)
+: container_node(nxt, s, divlevel, c), x(i)
 {
 }
 
@@ -3251,11 +3251,6 @@ void vline_node::dump_properties()
   fflush(stderr);
 }
 
-vline_node::~vline_node()
-{
-  delete nodes;
-}
-
 node *vline_node::copy()
 {
   return new vline_node(x, (nodes != 0 /* nullptr */) ? nodes->copy()
diff --git a/src/roff/troff/node.h b/src/roff/troff/node.h
index 71a172874..2bfc3b01e 100644
--- a/src/roff/troff/node.h
+++ b/src/roff/troff/node.h
@@ -445,15 +445,12 @@ public:
   void dump_properties();
 };
 
-// TODO: Derive from abstract class `container_node`.
-class vline_node : public node {
+class vline_node : public container_node {
   vunits x;
-  node *nodes;
 public:
   vline_node(vunits, node *, node * /* nxt */ = 0 /* nullptr */);
   vline_node(vunits, node *, statem *, int,
             node * /* nxt */ = 0 /* nullptr */);
-  ~vline_node();
   node *copy();
   void tprint(troff_output_file *);
   hunits width();

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

Reply via email to