gbranden pushed a commit to branch master in repository groff. commit d667af72e162c3ef269f7da269ab75f186ad9e4c Author: G. Branden Robinson <g.branden.robin...@gmail.com> AuthorDate: Wed Feb 26 04:40:23 2025 -0600
[troff]: Improve `node` types' const-correctness. * src/roff/troff/node.{h,cpp}: Improve `const`-correctness of `ascii_output_file` class and related helper functions. * src/roff/troff/node.h (struct node, class space_node) (class hmotion_node, class space_char_hmotion_node) (class zero_width_node, class left_italic_corrected_node): Mark `ascii_print()` member functions' `ascii_output_file` pointer argument as `const`. * src/roff/troff/node.cpp (class ascii_output_file): Declare `outc()` and `outs()` member functions as `const` (for our C-only readers, this means they don't mutate the object upon which they're called). (ascii_output_file::outc, ascii_output_file::outs): Mark them as `const` in corresponding definitions. (class glyph_node, class ligature_node, class kern_pair_node) (class dbreak_node, class glyph_node, class ligature_node) (class italic_corrected_node, class break_char_node) (class composite_node): Mark `ascii_print()` member functions' `ascii_output_file` pointer argument as `const`. (italic_corrected_node::ascii_print) (break_char_node::ascii_print, dbreak_node::ascii_print) (kern_pair_node::ascii_print, node::ascii_print) (space_node::ascii_print, hmotion_node::ascii_print) (space_char_hmotion_node::ascii_print) (zero_width_node::ascii_print, composite_node::ascii_print) (left_italic_corrected_node::ascii_print): Mark them as `const` in corresponding definitions. (ascii_print_node_list, ascii_print_reverse_node_list): Mark `ascii_output_file` pointer argument as `const`. --- ChangeLog | 33 ++++++++++++++++++++++++++++++ src/roff/troff/node.cpp | 54 +++++++++++++++++++++++++------------------------ src/roff/troff/node.h | 12 +++++------ 3 files changed, 67 insertions(+), 32 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0c8e08c44..5eb4dc56e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,36 @@ +2025-02-26 G. Branden Robinson <g.branden.robin...@gmail.com> + + * src/roff/troff/node.{h,cpp}: Improve `const`-correctness of + `ascii_output_file` class and related helper functions. + + * src/roff/troff/node.h (struct node, class space_node) + (class hmotion_node, class space_char_hmotion_node) + (class zero_width_node, class left_italic_corrected_node): Mark + `ascii_print()` member functions' `ascii_output_file` pointer + argument as `const`. + + * src/roff/troff/node.cpp (class ascii_output_file): Declare + `outc()` and `outs()` member functions as `const` (for our + C-only readers, this means they don't mutate the object upon + which they're called). + (ascii_output_file::outc, ascii_output_file::outs): Mark them + as `const` in corresponding definitions. + (class glyph_node, class ligature_node, class kern_pair_node) + (class dbreak_node, class glyph_node, class ligature_node) + (class italic_corrected_node, class break_char_node) + (class composite_node): Mark `ascii_print()` member functions' + `ascii_output_file` pointer argument as `const`. + (italic_corrected_node::ascii_print) + (break_char_node::ascii_print, dbreak_node::ascii_print) + (kern_pair_node::ascii_print, node::ascii_print) + (space_node::ascii_print, hmotion_node::ascii_print) + (space_char_hmotion_node::ascii_print) + (zero_width_node::ascii_print, composite_node::ascii_print) + (left_italic_corrected_node::ascii_print): Mark them as `const` + in corresponding definitions. + (ascii_print_node_list, ascii_print_reverse_node_list): Mark + `ascii_output_file` pointer argument as `const`. + 2025-02-26 G. Branden Robinson <g.branden.robin...@gmail.com> * src/roff/troff/node.cpp: Fix code style nit. diff --git a/src/roff/troff/node.cpp b/src/roff/troff/node.cpp index 4ba404a39..58e9148a8 100644 --- a/src/roff/troff/node.cpp +++ b/src/roff/troff/node.cpp @@ -765,17 +765,17 @@ public: void really_transparent_char(unsigned char); void really_print_line(hunits x, vunits y, node *n, vunits, vunits, hunits width); void really_begin_page(int pageno, vunits page_length); - void outc(unsigned char c); - void outs(const char *s); + void outc(unsigned char c) const; + void outs(const char *s) const; }; -void ascii_output_file::outc(unsigned char c) +void ascii_output_file::outc(unsigned char c) const { if (fp != 0 /* nullptr */) fputc(c, fp); } -void ascii_output_file::outs(const char *s) +void ascii_output_file::outs(const char *s) const { if (fp != 0 /* nullptr */) { fputc('<', fp); @@ -1925,7 +1925,7 @@ public: void zero_width_tprint(troff_output_file *); hyphen_list *get_hyphen_list(hyphen_list *, int *); node *add_self(node *, hyphen_list **); - void ascii_print(ascii_output_file *); + void ascii_print(const ascii_output_file *); void asciify(macro *); int character_type(); bool is_same_as(node *); @@ -1953,7 +1953,7 @@ public: node *copy(); node *add_self(node *, hyphen_list **); hyphen_list *get_hyphen_list(hyphen_list *, int *); - void ascii_print(ascii_output_file *); + void ascii_print(const ascii_output_file *); void asciify(macro *); bool is_same_as(node *); const char *type(); @@ -1981,7 +1981,7 @@ public: void tprint(troff_output_file *); hyphenation_type get_hyphenation_type(); int ends_sentence(); - void ascii_print(ascii_output_file *); + void ascii_print(const ascii_output_file *); void asciify(macro *); bool is_same_as(node *); const char *type(); @@ -2012,7 +2012,7 @@ public: int ends_sentence(); void split(int, node **, node **); hyphenation_type get_hyphenation_type(); - void ascii_print(ascii_output_file *); + void ascii_print(const ascii_output_file *); void asciify(macro *); bool is_same_as(node *); const char *type(); @@ -2201,7 +2201,7 @@ hyphenation_type glyph_node::get_hyphenation_type() return HYPHEN_MIDDLE; } -void glyph_node::ascii_print(ascii_output_file *ascii) +void glyph_node::ascii_print(const ascii_output_file *ascii) { unsigned char c = ci->get_ascii_code(); if (c != '\0') @@ -2265,7 +2265,7 @@ node *ligature_node::copy() #endif } -void ligature_node::ascii_print(ascii_output_file *ascii) +void ligature_node::ascii_print(const ascii_output_file *ascii) { n1->ascii_print(ascii); n2->ascii_print(ascii); @@ -2670,7 +2670,7 @@ public: node * = 0 /* nullptr */); ~italic_corrected_node(); node *copy(); - void ascii_print(ascii_output_file *); + void ascii_print(const ascii_output_file *); void asciify(macro *); hunits width(); node *last_char_node(); @@ -2748,7 +2748,7 @@ hunits italic_corrected_node::subscript_correction() return n->subscript_correction() - x; } -void italic_corrected_node::ascii_print(ascii_output_file *out) +void italic_corrected_node::ascii_print(const ascii_output_file *out) { n->ascii_print(out); } @@ -2824,7 +2824,7 @@ public: hyphen_list *get_hyphen_list(hyphen_list *, int *); void tprint(troff_output_file *); void zero_width_tprint(troff_output_file *); - void ascii_print(ascii_output_file *); + void ascii_print(const ascii_output_file *); void asciify(macro *); hyphenation_type get_hyphenation_type(); int overlaps_vertically(); @@ -2947,7 +2947,7 @@ hyphenation_type break_char_node::get_hyphenation_type() return HYPHEN_MIDDLE; } -void break_char_node::ascii_print(ascii_output_file *ascii) +void break_char_node::ascii_print(const ascii_output_file *ascii) { ch->ascii_print(ascii); } @@ -3531,7 +3531,8 @@ void vline_node::vertical_extent(vunits *min, vunits *max) /* ascii_print methods */ -static void ascii_print_node_list(ascii_output_file *ascii, node *n) +static void ascii_print_node_list(const ascii_output_file *ascii, + node *n) { node *nn = n; while(nn != 0 /* nullptr */) { @@ -3540,7 +3541,8 @@ static void ascii_print_node_list(ascii_output_file *ascii, node *n) } } -static void ascii_print_reverse_node_list(ascii_output_file *ascii, node *n) +static void ascii_print_reverse_node_list( + const ascii_output_file *ascii, node *n) { if (0 /* nullptr */ == n) return; @@ -3548,40 +3550,40 @@ static void ascii_print_reverse_node_list(ascii_output_file *ascii, node *n) n->ascii_print(ascii); } -void dbreak_node::ascii_print(ascii_output_file *ascii) +void dbreak_node::ascii_print(const ascii_output_file *ascii) { ascii_print_reverse_node_list(ascii, none); } -void kern_pair_node::ascii_print(ascii_output_file *ascii) +void kern_pair_node::ascii_print(const ascii_output_file *ascii) { n1->ascii_print(ascii); n2->ascii_print(ascii); } -void node::ascii_print(ascii_output_file *) +void node::ascii_print(const ascii_output_file *) { } -void space_node::ascii_print(ascii_output_file *ascii) +void space_node::ascii_print(const ascii_output_file *ascii) { if (!n.is_zero()) ascii->outc(' '); } -void hmotion_node::ascii_print(ascii_output_file *ascii) +void hmotion_node::ascii_print(const ascii_output_file *ascii) { // this is pretty arbitrary if (n >= points_to_units(2)) ascii->outc(' '); } -void space_char_hmotion_node::ascii_print(ascii_output_file *ascii) +void space_char_hmotion_node::ascii_print(const ascii_output_file *ascii) { ascii->outc(' '); } -void zero_width_node::ascii_print(ascii_output_file *out) +void zero_width_node::ascii_print(const ascii_output_file *out) const { ascii_print_node_list(out, n); } @@ -4330,7 +4332,7 @@ public: units size(); void tprint(troff_output_file *); hyphenation_type get_hyphenation_type(); - void ascii_print(ascii_output_file *); + void ascii_print(const ascii_output_file *); void asciify(macro *); hyphen_list *get_hyphen_list(hyphen_list *, int *); node *add_self(node *, hyphen_list **); @@ -4411,7 +4413,7 @@ void composite_node::asciify(macro *m) m->append(this); } -void composite_node::ascii_print(ascii_output_file *ascii) +void composite_node::ascii_print(const ascii_output_file *ascii) { unsigned char c = ci->get_ascii_code(); if (c != 0) @@ -5615,7 +5617,7 @@ bool left_italic_corrected_node::is_same_as(node *nd) && same_node(n, ((left_italic_corrected_node *)nd)->n)); } -void left_italic_corrected_node::ascii_print(ascii_output_file *out) +void left_italic_corrected_node::ascii_print(const ascii_output_file *out) { if (n) n->ascii_print(out); diff --git a/src/roff/troff/node.h b/src/roff/troff/node.h index fe96fa1c6..3bf034876 100644 --- a/src/roff/troff/node.h +++ b/src/roff/troff/node.h @@ -85,7 +85,7 @@ struct node { virtual node *add_discretionary_hyphen(); virtual node *add_self(node *, hyphen_list **); virtual hyphen_list *get_hyphen_list(hyphen_list *, int *); - virtual void ascii_print(ascii_output_file *); + virtual void ascii_print(const ascii_output_file *); virtual void asciify(macro *); virtual int discardable(); virtual void spread_space(int *, hunits *); @@ -201,7 +201,7 @@ public: bool /* is_inner */ = false); int nbreaks(); void split(int, node **, node **); - void ascii_print(ascii_output_file *); + void ascii_print(const ascii_output_file *); bool is_same_as(node *); void asciify(macro *); const char *type(); @@ -350,7 +350,7 @@ public: void asciify(macro *); void tprint(troff_output_file *); hunits width(); - void ascii_print(ascii_output_file *); + void ascii_print(const ascii_output_file *); bool is_same_as(node *); const char *type(); bool causes_tprint(); @@ -367,7 +367,7 @@ public: space_char_hmotion_node(hunits, color *, statem *, int, node * /* nxt */ = 0 /* nullptr */); node *copy(); - void ascii_print(ascii_output_file *); + void ascii_print(const ascii_output_file *); void asciify(macro *); void tprint(troff_output_file *); bool is_same_as(node *); @@ -461,7 +461,7 @@ public: ~zero_width_node(); node *copy(); void tprint(troff_output_file *); - void ascii_print(ascii_output_file *); + void ascii_print(const ascii_output_file *) const; bool is_same_as(node *); const char *type(); bool causes_tprint(); @@ -480,7 +480,7 @@ public: node * /* xx */ = 0 /* nullptr */); ~left_italic_corrected_node(); void tprint(troff_output_file *); - void ascii_print(ascii_output_file *); + void ascii_print(const ascii_output_file *); void asciify(macro *); node *copy(); bool is_same_as(node *); _______________________________________________ groff-commit mailing list groff-commit@gnu.org https://lists.gnu.org/mailman/listinfo/groff-commit