gbranden pushed a commit to branch master
in repository groff.
commit 613e384e5072edf8d455710be40a4d94d4b27809
Author: G. Branden Robinson <[email protected]>
AuthorDate: Tue Mar 4 08:33:21 2025 -0600
[troff]: Implement recursive node dumping (8e/9).
Derive class `break_char_node` from struct `container_node`.
* src/roff/troff/node.h (class break_char_node): Do it. Drop
pointer-to-node member variable and declaration of destructor.
* src/roff/troff/node.cpp (break_char_node::break_char_node): Migrate
constructors to use new base class.
(break_char_node::~break_char_node): Drop; our base class handles
destruction of contained node(s).
Changes `pline` request output as follows.
-{"type": "break_char_node", "diversion level": 0, "is_special_node":
false, "break code before": 2, "break code after": 0, "terminal_color":
"default"},
+{"type": "break_char_node", "diversion level": 0, "is_special_node":
false, "break code before": 2, "break code after": 0, "terminal_color":
"default", "contents": [{"type": "glyph_node", "diversion level": 0,
"is_special_node": false, "character": "-"}]},
---
ChangeLog | 12 ++++++++++++
src/roff/troff/node.cpp | 15 +++------------
2 files changed, 15 insertions(+), 12 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 65f58d14f..59a9e00d1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2025-03-04 G. Branden Robinson <[email protected]>
+
+ [troff]: Derive class `break_char_node` from struct
+ `container_node`.
+
+ * src/roff/troff/node.h (class break_char_node): Do it. Drop
+ pointer-to-node member variable and declaration of destructor.
+ * src/roff/troff/node.cpp (break_char_node::break_char_node):
+ Migrate constructors to use new base class.
+ (break_char_node::~break_char_node): Drop; our base class
+ handles destruction of contained node(s).
+
2025-03-04 G. Branden Robinson <[email protected]>
[troff]: Derive class `italic_corrected_node` from struct
diff --git a/src/roff/troff/node.cpp b/src/roff/troff/node.cpp
index 398d4abab..d33d7c3b4 100644
--- a/src/roff/troff/node.cpp
+++ b/src/roff/troff/node.cpp
@@ -2915,9 +2915,7 @@ int italic_corrected_node::character_type()
return nodes->character_type();
}
-// TODO: Derive from abstract class `container_node`.
-class break_char_node : public node {
- node *nodes;
+class break_char_node : public container_node {
char break_code;
char prev_break_code;
color *col;
@@ -2925,7 +2923,6 @@ public:
break_char_node(node *, int, int, color *, node * = 0 /* nullptr */);
break_char_node(node *, int, int, color *, statem *, int,
node * = 0 /* nullptr */);
- ~break_char_node();
node *copy();
hunits width();
vunits vertical_width();
@@ -2952,14 +2949,13 @@ public:
};
break_char_node::break_char_node(node *n, int bc, int pbc, color *c, node *x)
-: node(x), nodes(n), break_code(bc), prev_break_code(pbc), col(c)
+: container_node(x, n), break_code(bc), prev_break_code(pbc), col(c)
{
}
break_char_node::break_char_node(node *n, int bc, int pbc, color *c,
statem *s, int divlevel, node *x)
-: node(x, s, divlevel), nodes(n), break_code(bc), prev_break_code(pbc),
- col(c)
+: container_node(x, s, divlevel, n), break_code(bc), prev_break_code(pbc),
col(c)
{
}
@@ -2973,11 +2969,6 @@ void break_char_node::dump_properties()
fflush(stderr);
}
-break_char_node::~break_char_node()
-{
- delete nodes;
-}
-
node *break_char_node::copy()
{
return new break_char_node(nodes->copy(), break_code, prev_break_code,
_______________________________________________
groff-commit mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/groff-commit