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