diff options
Diffstat (limited to 'source/luametatex/source/tex/texmaincontrol.h')
-rw-r--r-- | source/luametatex/source/tex/texmaincontrol.h | 76 |
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 |