[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[groff] 15/21: src/roff/troff/env.cpp: Trivially refactor.
From: |
G. Branden Robinson |
Subject: |
[groff] 15/21: src/roff/troff/env.cpp: Trivially refactor. |
Date: |
Sat, 2 Mar 2024 01:25:02 -0500 (EST) |
gbranden pushed a commit to branch master
in repository groff.
commit 2d45a77e5cc53f3681766ea84cd9cc8368160898
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
AuthorDate: Fri Mar 1 21:35:08 2024 -0600
src/roff/troff/env.cpp: Trivially refactor.
Relocate some code to avoid needing forward declarations in forthcoming
change.
---
src/roff/troff/env.cpp | 288 ++++++++++++++++++++++++-------------------------
1 file changed, 144 insertions(+), 144 deletions(-)
diff --git a/src/roff/troff/env.cpp b/src/roff/troff/env.cpp
index bd0616349..457749b8d 100644
--- a/src/roff/troff/env.cpp
+++ b/src/roff/troff/env.cpp
@@ -3491,130 +3491,6 @@ void print_env()
skip_line();
}
-#define init_int_env_reg(name, func) \
- register_dictionary.define(name, new int_env_reg(&environment::func))
-
-#define init_unsigned_env_reg(name, func) \
- register_dictionary.define(name, new unsigned_env_reg(&environment::func))
-
-#define init_vunits_env_reg(name, func) \
- register_dictionary.define(name, new vunits_env_reg(&environment::func))
-
-#define init_hunits_env_reg(name, func) \
- register_dictionary.define(name, new hunits_env_reg(&environment::func))
-
-#define init_string_env_reg(name, func) \
- register_dictionary.define(name, new string_env_reg(&environment::func))
-
-void init_env_requests()
-{
- init_request("ad", adjust);
- init_request("br", break_without_adjustment);
- init_request("brp", break_with_adjustment);
- init_request("ce", center);
- init_request("cu", continuous_underline);
- init_request("ev", environment_switch);
- init_request("evc", environment_copy);
- init_request("fam", family_change);
- init_request("fc", field_characters);
- init_request("fi", fill);
- init_request("fcolor", fill_color_change);
- init_request("ft", select_font);
- init_request("gcolor", glyph_color_change);
- init_request("hc", hyphen_char);
- init_request("hlm", hyphen_line_max_request);
- init_request("hy", hyphenate_request);
- init_request("hym", hyphenation_margin_request);
- init_request("hys", hyphenation_space_request);
- init_request("in", indent);
- init_request("it", input_trap);
- init_request("itc", input_trap_continued);
- init_request("lc", leader_character);
- init_request("linetabs", line_tabs_request);
- init_request("ll", line_length);
- init_request("ls", line_spacing);
- init_request("lt", title_length);
- init_request("mc", margin_character);
- init_request("na", no_adjust);
- init_request("nf", no_fill);
- init_request("nh", no_hyphenate);
- init_request("nm", number_lines);
- init_request("nn", no_number);
- init_request("pev", print_env);
- init_request("ps", point_size);
- init_request("pvs", post_vertical_spacing);
- init_request("rj", right_justify);
- init_request("sizes", override_sizes);
- init_request("ss", space_size);
- init_request("ta", set_tabs);
- init_request("ti", temporary_indent);
- init_request("tc", tab_character);
- init_request("tl", title);
- init_request("ul", underline);
- init_request("vs", vertical_spacing);
-#ifdef WIDOW_CONTROL
- init_request("wdc", widow_control_request);
-#endif /* WIDOW_CONTROL */
- init_int_env_reg(".b", get_bold);
- init_vunits_env_reg(".cdp", get_prev_char_depth);
- init_int_env_reg(".ce", get_center_lines);
- init_vunits_env_reg(".cht", get_prev_char_height);
- init_hunits_env_reg(".csk", get_prev_char_skew);
- init_string_env_reg(".ev", get_name_string);
- init_int_env_reg(".f", get_font);
- init_string_env_reg(".fam", get_font_family_string);
- init_string_env_reg(".fn", get_font_name_string);
- init_int_env_reg(".height", get_char_height);
- init_int_env_reg(".hlc", get_hyphen_line_count);
- init_int_env_reg(".hlm", get_hyphen_line_max);
- init_unsigned_env_reg(".hy", get_hyphenation_mode);
- init_unsigned_env_reg(".hydefault", get_hyphenation_mode_default);
- init_hunits_env_reg(".hym", get_hyphenation_margin);
- init_hunits_env_reg(".hys", get_hyphenation_space);
- init_hunits_env_reg(".i", get_indent);
- init_hunits_env_reg(".in", get_saved_indent);
- init_int_env_reg(".int", get_prev_line_interrupted);
- init_int_env_reg(".it", get_input_trap_line_count);
- init_int_env_reg(".itc", get_input_trap_respects_continuation);
- init_string_env_reg(".itm", get_input_trap_macro);
- init_int_env_reg(".linetabs", get_line_tabs);
- init_hunits_env_reg(".lt", get_title_length);
- init_unsigned_env_reg(".j", get_adjust_mode);
- init_hunits_env_reg(".k", get_text_length);
- init_int_env_reg(".L", get_line_spacing);
- init_hunits_env_reg(".l", get_line_length);
- init_hunits_env_reg(".ll", get_saved_line_length);
- init_string_env_reg(".M", get_fill_color_string);
- init_string_env_reg(".m", get_glyph_color_string);
- init_hunits_env_reg(".n", get_prev_text_length);
- init_int_env_reg(".nm", get_numbering_nodes);
- init_int_env_reg(".nn", get_no_number_count);
- init_int_env_reg(".ps", get_point_size);
- init_int_env_reg(".psr", get_requested_point_size);
- init_vunits_env_reg(".pvs", get_post_vertical_spacing);
- init_int_env_reg(".rj", get_right_justify_lines);
- init_string_env_reg(".s", get_point_size_string);
- init_int_env_reg(".slant", get_char_slant);
- init_int_env_reg(".ss", get_space_size);
- init_int_env_reg(".sss", get_sentence_space_size);
- init_string_env_reg(".sr", get_requested_point_size_string);
- init_string_env_reg(".sty", get_style_name_string);
- init_string_env_reg(".tabs", get_tabs);
- init_int_env_reg(".u", get_fill);
- init_vunits_env_reg(".v", get_vertical_spacing);
- init_hunits_env_reg(".w", get_prev_char_width);
- init_int_env_reg(".zoom", get_zoom);
- register_dictionary.define("ct", new variable_reg(&ct_reg_contents));
- register_dictionary.define("hp", new horizontal_place_reg);
- register_dictionary.define("ln", new variable_reg(&next_line_number));
- register_dictionary.define("rsb", new variable_reg(&rsb_reg_contents));
- register_dictionary.define("rst", new variable_reg(&rst_reg_contents));
- register_dictionary.define("sb", new variable_reg(&sb_reg_contents));
- register_dictionary.define("skw", new variable_reg(&skw_reg_contents));
- register_dictionary.define("ssc", new variable_reg(&ssc_reg_contents));
- register_dictionary.define("st", new variable_reg(&st_reg_contents));
-}
-
// Hyphenation - TeX's hyphenation algorithm with a less fancy implementation.
struct trie_node;
@@ -4133,6 +4009,150 @@ void hyphen_trie::read_patterns_file(const char *name,
int append,
return;
}
+class hyphenation_language_reg : public reg {
+public:
+ const char *get_string();
+};
+
+const char *hyphenation_language_reg::get_string()
+{
+ return current_language ? current_language->name.contents() : "";
+}
+
+class hyphenation_default_mode_reg : public reg {
+public:
+ const char *get_string();
+};
+
+const char *hyphenation_default_mode_reg::get_string()
+{
+ return i_to_a(curenv->get_hyphenation_mode_default());
+}
+
+#define init_int_env_reg(name, func) \
+ register_dictionary.define(name, new int_env_reg(&environment::func))
+
+#define init_unsigned_env_reg(name, func) \
+ register_dictionary.define(name, new unsigned_env_reg(&environment::func))
+
+#define init_vunits_env_reg(name, func) \
+ register_dictionary.define(name, new vunits_env_reg(&environment::func))
+
+#define init_hunits_env_reg(name, func) \
+ register_dictionary.define(name, new hunits_env_reg(&environment::func))
+
+#define init_string_env_reg(name, func) \
+ register_dictionary.define(name, new string_env_reg(&environment::func))
+
+void init_env_requests()
+{
+ init_request("ad", adjust);
+ init_request("br", break_without_adjustment);
+ init_request("brp", break_with_adjustment);
+ init_request("ce", center);
+ init_request("cu", continuous_underline);
+ init_request("ev", environment_switch);
+ init_request("evc", environment_copy);
+ init_request("fam", family_change);
+ init_request("fc", field_characters);
+ init_request("fi", fill);
+ init_request("fcolor", fill_color_change);
+ init_request("ft", select_font);
+ init_request("gcolor", glyph_color_change);
+ init_request("hc", hyphen_char);
+ init_request("hlm", hyphen_line_max_request);
+ init_request("hy", hyphenate_request);
+ init_request("hym", hyphenation_margin_request);
+ init_request("hys", hyphenation_space_request);
+ init_request("in", indent);
+ init_request("it", input_trap);
+ init_request("itc", input_trap_continued);
+ init_request("lc", leader_character);
+ init_request("linetabs", line_tabs_request);
+ init_request("ll", line_length);
+ init_request("ls", line_spacing);
+ init_request("lt", title_length);
+ init_request("mc", margin_character);
+ init_request("na", no_adjust);
+ init_request("nf", no_fill);
+ init_request("nh", no_hyphenate);
+ init_request("nm", number_lines);
+ init_request("nn", no_number);
+ init_request("pev", print_env);
+ init_request("ps", point_size);
+ init_request("pvs", post_vertical_spacing);
+ init_request("rj", right_justify);
+ init_request("sizes", override_sizes);
+ init_request("ss", space_size);
+ init_request("ta", set_tabs);
+ init_request("ti", temporary_indent);
+ init_request("tc", tab_character);
+ init_request("tl", title);
+ init_request("ul", underline);
+ init_request("vs", vertical_spacing);
+#ifdef WIDOW_CONTROL
+ init_request("wdc", widow_control_request);
+#endif /* WIDOW_CONTROL */
+ init_int_env_reg(".b", get_bold);
+ init_vunits_env_reg(".cdp", get_prev_char_depth);
+ init_int_env_reg(".ce", get_center_lines);
+ init_vunits_env_reg(".cht", get_prev_char_height);
+ init_hunits_env_reg(".csk", get_prev_char_skew);
+ init_string_env_reg(".ev", get_name_string);
+ init_int_env_reg(".f", get_font);
+ init_string_env_reg(".fam", get_font_family_string);
+ init_string_env_reg(".fn", get_font_name_string);
+ init_int_env_reg(".height", get_char_height);
+ init_int_env_reg(".hlc", get_hyphen_line_count);
+ init_int_env_reg(".hlm", get_hyphen_line_max);
+ init_unsigned_env_reg(".hy", get_hyphenation_mode);
+ init_unsigned_env_reg(".hydefault", get_hyphenation_mode_default);
+ init_hunits_env_reg(".hym", get_hyphenation_margin);
+ init_hunits_env_reg(".hys", get_hyphenation_space);
+ init_hunits_env_reg(".i", get_indent);
+ init_hunits_env_reg(".in", get_saved_indent);
+ init_int_env_reg(".int", get_prev_line_interrupted);
+ init_int_env_reg(".it", get_input_trap_line_count);
+ init_int_env_reg(".itc", get_input_trap_respects_continuation);
+ init_string_env_reg(".itm", get_input_trap_macro);
+ init_int_env_reg(".linetabs", get_line_tabs);
+ init_hunits_env_reg(".lt", get_title_length);
+ init_unsigned_env_reg(".j", get_adjust_mode);
+ init_hunits_env_reg(".k", get_text_length);
+ init_int_env_reg(".L", get_line_spacing);
+ init_hunits_env_reg(".l", get_line_length);
+ init_hunits_env_reg(".ll", get_saved_line_length);
+ init_string_env_reg(".M", get_fill_color_string);
+ init_string_env_reg(".m", get_glyph_color_string);
+ init_hunits_env_reg(".n", get_prev_text_length);
+ init_int_env_reg(".nm", get_numbering_nodes);
+ init_int_env_reg(".nn", get_no_number_count);
+ init_int_env_reg(".ps", get_point_size);
+ init_int_env_reg(".psr", get_requested_point_size);
+ init_vunits_env_reg(".pvs", get_post_vertical_spacing);
+ init_int_env_reg(".rj", get_right_justify_lines);
+ init_string_env_reg(".s", get_point_size_string);
+ init_int_env_reg(".slant", get_char_slant);
+ init_int_env_reg(".ss", get_space_size);
+ init_int_env_reg(".sss", get_sentence_space_size);
+ init_string_env_reg(".sr", get_requested_point_size_string);
+ init_string_env_reg(".sty", get_style_name_string);
+ init_string_env_reg(".tabs", get_tabs);
+ init_int_env_reg(".u", get_fill);
+ init_vunits_env_reg(".v", get_vertical_spacing);
+ init_hunits_env_reg(".w", get_prev_char_width);
+ init_int_env_reg(".zoom", get_zoom);
+ register_dictionary.define("ct", new variable_reg(&ct_reg_contents));
+ register_dictionary.define("hp", new horizontal_place_reg);
+ register_dictionary.define("ln", new variable_reg(&next_line_number));
+ register_dictionary.define("rsb", new variable_reg(&rsb_reg_contents));
+ register_dictionary.define("rst", new variable_reg(&rst_reg_contents));
+ register_dictionary.define("sb", new variable_reg(&sb_reg_contents));
+ register_dictionary.define("skw", new variable_reg(&skw_reg_contents));
+ register_dictionary.define("ssc", new variable_reg(&ssc_reg_contents));
+ register_dictionary.define("st", new variable_reg(&st_reg_contents));
+}
+
void hyphenate(hyphen_list *h, unsigned flags)
{
if (!current_language)
@@ -4264,26 +4284,6 @@ static void append_hyphenation_patterns_from_file()
read_hyphenation_patterns_from_file(true /* append */);
}
-class hyphenation_language_reg : public reg {
-public:
- const char *get_string();
-};
-
-const char *hyphenation_language_reg::get_string()
-{
- return current_language ? current_language->name.contents() : "";
-}
-
-class hyphenation_default_mode_reg : public reg {
-public:
- const char *get_string();
-};
-
-const char *hyphenation_default_mode_reg::get_string()
-{
- return i_to_a(curenv->get_hyphenation_mode_default());
-}
-
void init_hyphen_requests()
{
init_request("hla", select_hyphenation_language);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [groff] 15/21: src/roff/troff/env.cpp: Trivially refactor.,
G. Branden Robinson <=