summaryrefslogtreecommitdiff
path: root/source/luametatex/source/tex/texmaincontrol.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/luametatex/source/tex/texmaincontrol.h')
-rw-r--r--source/luametatex/source/tex/texmaincontrol.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/source/luametatex/source/tex/texmaincontrol.h b/source/luametatex/source/tex/texmaincontrol.h
new file mode 100644
index 000000000..b71aaedac
--- /dev/null
+++ b/source/luametatex/source/tex/texmaincontrol.h
@@ -0,0 +1,76 @@
+/*
+ See license.txt in the root of this project.
+*/
+
+# ifndef LMT_MAINCONTROL_H
+# define LMT_MAINCONTROL_H
+
+/*tex
+
+ To handle the execution state of |main_control|'s eternal loop, an extra global variable is
+ used, along with a macro to define its values.
+
+*/
+
+typedef enum control_states {
+ goto_next_state,
+ goto_skip_token_state,
+ goto_return_state,
+} control_states;
+
+typedef struct main_control_state_info {
+ control_states control_state;
+ int local_level;
+ halfword after_token;
+ halfword after_tokens;
+ halfword last_par_context;
+ halfword loop_iterator;
+ halfword loop_nesting;
+ halfword quit_loop;
+} main_control_state_info;
+
+typedef enum saved_discretionary_items {
+ saved_discretionary_item_component = 0,
+ saved_discretionary_n_of_items = 1,
+} saved_discretionary_items;
+
+extern main_control_state_info lmt_main_control_state;
+
+extern void tex_initialize_variables (void);
+extern int tex_main_control (void);
+
+extern void tex_normal_paragraph (int context);
+extern void tex_begin_paragraph (int doindent, int context);
+extern void tex_end_paragraph (int group, int context);
+extern int tex_wrapped_up_paragraph (int context);
+
+extern void tex_insert_paragraph_token (void);
+
+extern int tex_in_privileged_mode (void);
+extern void tex_you_cant_error (const char *helpinfo);
+
+extern void tex_off_save (void);
+
+extern halfword tex_local_scan_box (void);
+extern void tex_box_end (int boxcontext, halfword boxnode, scaled shift, halfword mainclass);
+
+extern void tex_get_r_token (void);
+
+extern void tex_begin_local_control (void);
+extern void tex_end_local_control (void);
+extern void tex_local_control (int obeymode);
+extern void tex_local_control_message (const char *s);
+extern void tex_page_boundary_message (const char *s, halfword boundary);
+
+extern void tex_inject_text_or_line_dir (int d, int check_glue);
+
+extern void tex_run_prefixed_command (void);
+
+extern void tex_handle_assignments (void); /*tex Used in math. */
+
+extern void tex_assign_internal_int_value (int a, halfword p, int val);
+extern void tex_assign_internal_attribute_value (int a, halfword p, int val);
+extern void tex_assign_internal_dimen_value (int a, halfword p, int val);
+extern void tex_assign_internal_skip_value (int a, halfword p, int val);
+
+# endif