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