gbranden pushed a commit to branch master
in repository groff.
commit 94325a91b6813125ee902aa743a8288725606f8c
Author: G. Branden Robinson <[email protected]>
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 <[email protected]>
+
+ [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 <[email protected]>
[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
[email protected]
https://lists.gnu.org/mailman/listinfo/groff-commit