gbranden pushed a commit to branch master
in repository groff.
commit 244bf138b177e9f1d1aad1309458e437796dc4f7
Author: G. Branden Robinson <[email protected]>
AuthorDate: Mon Mar 3 11:23:48 2025 -0600
[troff]: Implement recursive node dumping (8a/9).
Derive class `hline_node` from struct `container_node`.
* src/roff/troff/node.h (class hline_node): Do it. Drop pointer-to-node
member variable and declaration of destructor.
* src/roff/troff/node.cpp (hline_node::~hline_node): Drop; our base
class handles destruction of contained node(s).
(hline_node::hline_node): Migrate constructors to use new base class.
Changes `pline` request output as follows.
-{"type": "hline_node", "diversion level": 0, "is_special_node": false,
"hunits": 144},
+{"type": "hline_node", "diversion level": 0, "is_special_node": false,
"hunits": 144, "contents": [{"type": "glyph_node", "diversion level": 0,
"is_special_node": false, "character": "A"}]},
---
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 0caffdc20..da6ca9347 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2025-03-03 G. Branden Robinson <[email protected]>
+
+ [troff]: Derive class `hline_node` from struct `container_node`.
+
+ * src/roff/troff/node.h (class hline_node): Do it. Drop
+ pointer-to-node member variable and declaration of destructor.
+ * src/roff/troff/node.cpp (hline_node::~hline_node): Drop; our
+ base class handles destruction of contained node(s).
+ (hline_node::hline_node): Migrate constructors to use new base
+ class.
+
2025-03-03 G. Branden Robinson <[email protected]>
[troff]: Create new `struct container_node` for node types that
diff --git a/src/roff/troff/node.cpp b/src/roff/troff/node.cpp
index a8e08f6c0..78f1080cc 100644
--- a/src/roff/troff/node.cpp
+++ b/src/roff/troff/node.cpp
@@ -3203,19 +3203,14 @@ node *transparent_dummy_node::copy()
return new transparent_dummy_node;
}
-hline_node::~hline_node()
-{
- delete nodes;
-}
-
hline_node::hline_node(hunits i, node *c, node *nxt)
-: node(nxt), x(i), nodes(c)
+: container_node(nxt, c), x(i)
{
}
hline_node::hline_node(hunits 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)
{
}
diff --git a/src/roff/troff/node.h b/src/roff/troff/node.h
index 37fa68d8e..71a172874 100644
--- a/src/roff/troff/node.h
+++ b/src/roff/troff/node.h
@@ -429,15 +429,12 @@ struct container_node : public node {
virtual void dump_node();
};
-// TODO: Derive from abstract class `container_node`.
-class hline_node : public node {
+class hline_node : public container_node {
hunits x;
- node *nodes;
public:
hline_node(hunits, node *, node * /* nxt */ = 0 /* nullptr */);
hline_node(hunits, node *, statem *, int,
node * /* nxt */ = 0 /* nullptr */);
- ~hline_node();
node *copy();
hunits width();
void tprint(troff_output_file *);
_______________________________________________
groff-commit mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/groff-commit